From 6b8a2bf2dcac6ca99c396c595b69e15821b7fa5e Mon Sep 17 00:00:00 2001 From: Olivier Paroz Date: Sat, 15 Aug 2015 21:26:50 +0200 Subject: [PATCH] Publish documentation and reports on GitHub --- .gitmodules | 3 + .travis.yml | 28 +- ...-file_3476ab6d8d8e2b493e4ec95785943936.dat | Bin 0 -> 9933 bytes ...-file_350a0c08c3377ad19201dfc0fc5f6473.dat | Bin 0 -> 52881 bytes ...-file_411c466861b73ebb2bf2ff54a681f720.dat | Bin 0 -> 4123 bytes ...-file_e1b15e88afed87f9c3281c683fd9bab8.dat | Bin 0 -> 34912 bytes ...-file_dbd57f179135ac897439ce577e0be467.dat | Bin 0 -> 6214 bytes ...-file_81da563b51cdf6c43913f8bef9e41574.dat | Bin 0 -> 7017 bytes ...-file_29b5cf85aa7a8f1d08963402e357b689.dat | Bin 0 -> 16929 bytes ...-file_deb4c73674117d49dc3f2fca9f90d705.dat | Bin 0 -> 10818 bytes .../phpdoc-cache-2e/phpdoc-cache-settings.dat | Bin 0 -> 113 bytes ...-file_aa6ed79081b43f7d3dc149671f91df8b.dat | Bin 0 -> 6172 bytes ...-file_66d4db56b10593258e31420a45a55d8e.dat | Bin 0 -> 8407 bytes ...-file_f968717855614b873cfbbceec04d8d04.dat | Bin 0 -> 4117 bytes ...-file_36b67f3177c9ae70b4e213abef535301.dat | Bin 0 -> 21014 bytes ...-file_0d8adb0a49878ce1ad5e7c53a29fbfde.dat | Bin 0 -> 41388 bytes ...-file_9408c95818cf78fa445b98c159658df7.dat | Bin 0 -> 21690 bytes ...-file_607547fe031895fa95d40a956c03eacb.dat | Bin 0 -> 45342 bytes ...-file_ebbf4d20f82d02db9b814976aef54c29.dat | Bin 0 -> 44943 bytes ...-file_9ca667cac53731526d8c0dd25c5d4ac0.dat | Bin 0 -> 75599 bytes ...-file_e5f25840eb9c9f1744f456616df37f37.dat | Bin 0 -> 8621 bytes ...-file_e74e4d5e9a43ec7403ccec477e89a6ea.dat | Bin 0 -> 50337 bytes ...-file_6254afe5f6cfbefa094d9a3c8b7e107a.dat | Bin 0 -> 21704 bytes ...-file_f5475468b7c6ebdf05639060d22b13de.dat | Bin 0 -> 27455 bytes ...-file_ed37aeacf1669d569f7875502ad0260b.dat | Bin 0 -> 7552 bytes ...-file_4341567e46f57d3a6bc76a6c90bc9cc9.dat | Bin 0 -> 7562 bytes ...-file_baa89daddc45c3a4175f5beb2f61d5c6.dat | Bin 0 -> 73372 bytes ...-file_079bbe455bfa9aeaf363ae1bc6415ba0.dat | Bin 0 -> 5138 bytes ...-file_5923a4a6f5a28fe61e0e5dc2d55cae1d.dat | Bin 0 -> 58545 bytes ...-file_96f8e0097b917a6cc65c87561bd6889e.dat | Bin 0 -> 8764 bytes ...-file_5bfbbad83d051b2294e9d8996e5f24bd.dat | Bin 0 -> 66397 bytes ...-file_98f41e4acfeac80f65d6397314947e94.dat | Bin 0 -> 18605 bytes ...-file_5710016683fd2fd8ba4b04f1e15033c5.dat | Bin 0 -> 11231 bytes ...-file_0e033fd8797499a87a6bf2ffccef5c3c.dat | Bin 0 -> 4926 bytes ...-file_30f80a45a0568ee5353b7f108c62ba70.dat | Bin 0 -> 4115 bytes ...-file_96293627148fd7f969d728e65a03b077.dat | Bin 0 -> 39483 bytes ...-file_a8d3ad1f02ffca9503fa85aff518fc1d.dat | Bin 0 -> 46505 bytes .../OCA.Gallery.AppInfo.Application.html | 229 + ...A.Gallery.Controller.ConfigController.html | 431 + ...CA.Gallery.Controller.FilesController.html | 567 + .../OCA.Gallery.Controller.JsonHttpError.html | 224 + ...OCA.Gallery.Controller.PageController.html | 736 ++ ...A.Gallery.Controller.PathManipulation.html | 230 + ....Gallery.Controller.PreviewController.html | 877 ++ ...ery.Controller.PublicConfigController.html | 432 + ...lery.Controller.PublicFilesController.html | 568 + ...ry.Controller.PublicPreviewController.html | 878 ++ .../OCA.Gallery.Environment.Environment.html | 1140 ++ ...lery.Environment.EnvironmentException.html | 229 + ...lery.Environment.NotFoundEnvException.html | 229 + .../OCA.Gallery.Http.ImageResponse.html | 295 + ...OCA.Gallery.Middleware.CheckException.html | 233 + ...CA.Gallery.Middleware.CheckMiddleware.html | 650 ++ ...Gallery.Middleware.EnvCheckMiddleware.html | 1296 +++ ...ery.Middleware.SharingCheckMiddleware.html | 796 ++ .../classes/OCA.Gallery.Preview.Preview.html | 904 ++ .../OCA.Gallery.Service.Base64Encode.html | 224 + .../OCA.Gallery.Service.ConfigParser.html | 545 + .../OCA.Gallery.Service.ConfigService.html | 1284 +++ .../OCA.Gallery.Service.DownloadService.html | 521 + .../OCA.Gallery.Service.FilesService.html | 879 ++ ...ery.Service.ForbiddenServiceException.html | 229 + ...lery.Service.NotFoundServiceException.html | 229 + .../OCA.Gallery.Service.PreviewService.html | 957 ++ ...A.Gallery.Service.SearchFolderService.html | 1074 ++ ...CA.Gallery.Service.SearchMediaService.html | 1284 +++ .../classes/OCA.Gallery.Service.Service.html | 449 + .../OCA.Gallery.Service.ServiceException.html | 229 + .../OCA.Gallery.Service.ThumbnailService.html | 286 + .../api/css/bootstrap-responsive.css | 567 + .../api/css/bootstrap-responsive.min.css | 3 + build/documentation/api/css/bootstrap.css | 3370 ++++++ build/documentation/api/css/bootstrap.min.css | 611 ++ .../documentation/api/css/jquery.iviewer.css | 91 + build/documentation/api/css/prettify.css | 1 + build/documentation/api/css/template.css | 530 + build/documentation/api/deprecated.html | 128 + build/documentation/api/errors.html | 1187 +++ build/documentation/api/graph_class.html | 129 + .../api/img/apple-touch-icon-114x114.png | Bin 0 -> 28338 bytes .../api/img/apple-touch-icon-72x72.png | Bin 0 -> 12751 bytes .../api/img/apple-touch-icon.png | Bin 0 -> 8358 bytes build/documentation/api/img/favicon.ico | Bin 0 -> 1150 bytes .../api/img/glyphicons-halflings-white.png | Bin 0 -> 4352 bytes .../api/img/glyphicons-halflings.png | Bin 0 -> 4352 bytes .../api/img/icons/arrow_down.png | Bin 0 -> 606 bytes .../api/img/icons/arrow_right.png | Bin 0 -> 628 bytes build/documentation/api/img/icons/class.png | Bin 0 -> 395 bytes .../documentation/api/img/icons/constant.png | Bin 0 -> 496 bytes build/documentation/api/img/icons/favicon.ico | Bin 0 -> 1150 bytes .../documentation/api/img/icons/file-php.png | Bin 0 -> 4017 bytes build/documentation/api/img/icons/file.gif | Bin 0 -> 110 bytes build/documentation/api/img/icons/folder.gif | Bin 0 -> 106 bytes .../documentation/api/img/icons/function.png | Bin 0 -> 338 bytes .../api/img/icons/icon-folder-open-big.png | Bin 0 -> 232 bytes .../api/img/icons/icon-th-big.png | Bin 0 -> 106 bytes .../api/img/icons/icon_template.svg | 93 + .../documentation/api/img/icons/interface.png | Bin 0 -> 281 bytes build/documentation/api/img/icons/method.png | Bin 0 -> 377 bytes build/documentation/api/img/icons/ok.png | Bin 0 -> 3685 bytes .../documentation/api/img/icons/property.png | Bin 0 -> 360 bytes build/documentation/api/img/icons/search.gif | Bin 0 -> 152 bytes .../documentation/api/img/icons/variable.png | Bin 0 -> 829 bytes .../api/img/icons/view_source.png | Bin 0 -> 603 bytes .../api/img/icons/visibility_private.png | Bin 0 -> 3433 bytes .../api/img/icons/visibility_protected.png | Bin 0 -> 764 bytes .../api/img/icons/visibility_public.png | Bin 0 -> 3451 bytes build/documentation/api/img/iviewer/grab.cur | Bin 0 -> 1150 bytes build/documentation/api/img/iviewer/hand.cur | Bin 0 -> 1150 bytes .../api/img/iviewer/iviewer.rotate_left.png | Bin 0 -> 1493 bytes .../api/img/iviewer/iviewer.rotate_right.png | Bin 0 -> 1482 bytes .../api/img/iviewer/iviewer.zoom_fit.png | Bin 0 -> 1252 bytes .../api/img/iviewer/iviewer.zoom_fit2.gif | Bin 0 -> 95 bytes .../api/img/iviewer/iviewer.zoom_in.png | Bin 0 -> 1420 bytes .../api/img/iviewer/iviewer.zoom_in2.gif | Bin 0 -> 90 bytes .../api/img/iviewer/iviewer.zoom_out.png | Bin 0 -> 1416 bytes .../api/img/iviewer/iviewer.zoom_out2.gif | Bin 0 -> 69 bytes .../api/img/iviewer/iviewer.zoom_zero.png | Bin 0 -> 1091 bytes .../api/img/iviewer/iviewer.zoom_zero2.gif | Bin 0 -> 98 bytes build/documentation/api/img/loader.gif | Bin 0 -> 4726 bytes build/documentation/api/index.html | 164 + build/documentation/api/js/SVGPan.js | 232 + build/documentation/api/js/bootstrap.js | 1722 +++ build/documentation/api/js/bootstrap.min.js | 1 + .../api/js/jqplot/MIT-LICENSE.txt | 21 + build/documentation/api/js/jqplot/README.txt | 77 + build/documentation/api/js/jqplot/changes.txt | 458 + .../documentation/api/js/jqplot/copyright.txt | 56 + .../api/js/jqplot/excanvas.min.js | 3 + build/documentation/api/js/jqplot/gpl-2.0.txt | 280 + .../api/js/jqplot/jquery.jqplot.min.css | 1 + .../api/js/jqplot/jquery.jqplot.min.js | 3 + .../plugins/jqplot.BezierCurveRenderer.min.js | 3 + .../jqplot/plugins/jqplot.barRenderer.min.js | 3 + .../plugins/jqplot.blockRenderer.min.js | 3 + .../plugins/jqplot.bubbleRenderer.min.js | 3 + .../jqplot.canvasAxisLabelRenderer.min.js | 3 + .../jqplot.canvasAxisTickRenderer.min.js | 3 + .../plugins/jqplot.canvasOverlay.min.js | 3 + .../plugins/jqplot.canvasTextRenderer.min.js | 3 + .../jqplot.categoryAxisRenderer.min.js | 3 + .../js/jqplot/plugins/jqplot.ciParser.min.js | 3 + .../js/jqplot/plugins/jqplot.cursor.min.js | 3 + .../plugins/jqplot.dateAxisRenderer.min.js | 3 + .../plugins/jqplot.donutRenderer.min.js | 3 + .../js/jqplot/plugins/jqplot.dragable.min.js | 3 + .../jqplot.enhancedLegendRenderer.min.js | 3 + .../plugins/jqplot.funnelRenderer.min.js | 3 + .../jqplot/plugins/jqplot.highlighter.min.js | 3 + .../api/js/jqplot/plugins/jqplot.json2.min.js | 3 + .../plugins/jqplot.logAxisRenderer.min.js | 3 + .../plugins/jqplot.mekkoAxisRenderer.min.js | 3 + .../plugins/jqplot.mekkoRenderer.min.js | 3 + .../plugins/jqplot.meterGaugeRenderer.min.js | 3 + .../js/jqplot/plugins/jqplot.mobile.min.js | 3 + .../jqplot/plugins/jqplot.ohlcRenderer.min.js | 3 + .../jqplot/plugins/jqplot.pieRenderer.min.js | 3 + .../jqplot/plugins/jqplot.pointLabels.min.js | 3 + .../plugins/jqplot.pyramidAxisRenderer.min.js | 3 + .../plugins/jqplot.pyramidGridRenderer.min.js | 3 + .../plugins/jqplot.pyramidRenderer.min.js | 3 + .../js/jqplot/plugins/jqplot.trendline.min.js | 3 + .../documentation/api/js/jquery-1.4.2.min.js | 154 + .../documentation/api/js/jquery-1.7.1.min.js | 9270 +++++++++++++++++ .../api/js/jquery-ui-1.8.2.custom.min.js | 1012 ++ build/documentation/api/js/jquery.cookie.js | 104 + build/documentation/api/js/jquery.iviewer.js | 1045 ++ .../api/js/jquery.iviewer.min.js | 42 + .../api/js/jquery.mousewheel.min.js | 13 + build/documentation/api/js/jquery.panzoom.js | 467 + build/documentation/api/js/jquery.splitter.js | 228 + .../documentation/api/js/jquery.tools.min.js | 115 + build/documentation/api/js/jquery.treeview.js | 256 + build/documentation/api/js/jquery.xml2json.js | 193 + build/documentation/api/js/menu.js | 31 + .../api/js/prettify/lang-apollo.js | 2 + .../documentation/api/js/prettify/lang-clj.js | 18 + .../documentation/api/js/prettify/lang-css.js | 2 + .../documentation/api/js/prettify/lang-go.js | 1 + .../documentation/api/js/prettify/lang-hs.js | 2 + .../api/js/prettify/lang-lisp.js | 3 + .../documentation/api/js/prettify/lang-lua.js | 2 + .../documentation/api/js/prettify/lang-ml.js | 2 + build/documentation/api/js/prettify/lang-n.js | 4 + .../api/js/prettify/lang-proto.js | 1 + .../api/js/prettify/lang-scala.js | 2 + .../documentation/api/js/prettify/lang-sql.js | 2 + .../documentation/api/js/prettify/lang-tex.js | 1 + .../documentation/api/js/prettify/lang-vb.js | 2 + .../api/js/prettify/lang-vhdl.js | 3 + .../api/js/prettify/lang-wiki.js | 2 + .../documentation/api/js/prettify/lang-xq.js | 3 + .../api/js/prettify/lang-yaml.js | 2 + .../api/js/prettify/prettify.min.js | 28 + build/documentation/api/js/sidebar.js | 45 + build/documentation/api/js/template.js | 248 + build/documentation/api/markers.html | 264 + .../api/namespaces/OCA.Gallery.AppInfo.html | 177 + .../namespaces/OCA.Gallery.Controller.html | 246 + .../namespaces/OCA.Gallery.Environment.html | 193 + .../api/namespaces/OCA.Gallery.Http.html | 177 + .../namespaces/OCA.Gallery.Middleware.html | 203 + .../api/namespaces/OCA.Gallery.Preview.html | 177 + .../api/namespaces/OCA.Gallery.Service.html | 274 + .../api/namespaces/OCA.Gallery.html | 697 ++ build/documentation/api/namespaces/OCA.html | 709 ++ .../documentation/api/namespaces/default.html | 721 ++ build/documentation/api/packages/Default.html | 797 ++ .../api/packages/OCA.Gallery.AppInfo.html | 176 + .../api/packages/OCA.Gallery.Controller.html | 237 + .../api/packages/OCA.Gallery.Environment.html | 176 + .../api/packages/OCA.Gallery.Http.html | 176 + .../api/packages/OCA.Gallery.Middleware.html | 192 + .../api/packages/OCA.Gallery.Preview.html | 176 + .../api/packages/OCA.Gallery.Service.html | 240 + .../OCA.Gallery.SharingCheckMiddleware.html | 176 + .../api/packages/OCA.Gallery.html | 688 ++ build/documentation/api/packages/OCA.html | 710 ++ build/documentation/docpublisher.sh | 32 + build/documentation/index.html | 18 + .../reports/code coverage/index.html | 0 build/documentation/reports/index.html | 0 codeception.yml | 1 + composer.json | 3 +- composer.lock | 2324 ++++- documentation/Album configuration.md | 143 - documentation/How to ignore folders.md | 16 - documentation/developers.html | 17 + documentation/wiki | 1 + phpdoc.xml | 29 + .../_generated/AcceptanceTesterActions.php | 3 +- .../_support/_generated/ApiTesterActions.php | 3 +- .../_generated/FunctionalTesterActions.php | 2 +- .../_generated/IntegrationTesterActions.php | 5 +- .../_support/_generated/UnitTesterActions.php | 4 +- tests/acceptance/SignInAsUserCept.php | 2 +- 236 files changed, 52277 insertions(+), 196 deletions(-) create mode 100644 .gitmodules create mode 100644 build/documentation/api/_structure/phpdoc-cache-13/phpdoc-cache-file_3476ab6d8d8e2b493e4ec95785943936.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-13/phpdoc-cache-file_350a0c08c3377ad19201dfc0fc5f6473.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-13/phpdoc-cache-file_411c466861b73ebb2bf2ff54a681f720.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-23/phpdoc-cache-file_e1b15e88afed87f9c3281c683fd9bab8.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-25/phpdoc-cache-file_dbd57f179135ac897439ce577e0be467.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-26/phpdoc-cache-file_81da563b51cdf6c43913f8bef9e41574.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-28/phpdoc-cache-file_29b5cf85aa7a8f1d08963402e357b689.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-2a/phpdoc-cache-file_deb4c73674117d49dc3f2fca9f90d705.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-2e/phpdoc-cache-settings.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-38/phpdoc-cache-file_aa6ed79081b43f7d3dc149671f91df8b.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-42/phpdoc-cache-file_66d4db56b10593258e31420a45a55d8e.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-57/phpdoc-cache-file_f968717855614b873cfbbceec04d8d04.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-61/phpdoc-cache-file_36b67f3177c9ae70b4e213abef535301.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-66/phpdoc-cache-file_0d8adb0a49878ce1ad5e7c53a29fbfde.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-78/phpdoc-cache-file_9408c95818cf78fa445b98c159658df7.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-9e/phpdoc-cache-file_607547fe031895fa95d40a956c03eacb.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-9e/phpdoc-cache-file_ebbf4d20f82d02db9b814976aef54c29.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-a3/phpdoc-cache-file_9ca667cac53731526d8c0dd25c5d4ac0.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-bc/phpdoc-cache-file_e5f25840eb9c9f1744f456616df37f37.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-c3/phpdoc-cache-file_e74e4d5e9a43ec7403ccec477e89a6ea.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-c4/phpdoc-cache-file_6254afe5f6cfbefa094d9a3c8b7e107a.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-c9/phpdoc-cache-file_f5475468b7c6ebdf05639060d22b13de.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-d1/phpdoc-cache-file_ed37aeacf1669d569f7875502ad0260b.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-d4/phpdoc-cache-file_4341567e46f57d3a6bc76a6c90bc9cc9.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-d4/phpdoc-cache-file_baa89daddc45c3a4175f5beb2f61d5c6.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-d9/phpdoc-cache-file_079bbe455bfa9aeaf363ae1bc6415ba0.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-db/phpdoc-cache-file_5923a4a6f5a28fe61e0e5dc2d55cae1d.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-dc/phpdoc-cache-file_96f8e0097b917a6cc65c87561bd6889e.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-e8/phpdoc-cache-file_5bfbbad83d051b2294e9d8996e5f24bd.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-ea/phpdoc-cache-file_98f41e4acfeac80f65d6397314947e94.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-ef/phpdoc-cache-file_5710016683fd2fd8ba4b04f1e15033c5.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-f1/phpdoc-cache-file_0e033fd8797499a87a6bf2ffccef5c3c.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-f3/phpdoc-cache-file_30f80a45a0568ee5353b7f108c62ba70.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-f8/phpdoc-cache-file_96293627148fd7f969d728e65a03b077.dat create mode 100644 build/documentation/api/_structure/phpdoc-cache-fe/phpdoc-cache-file_a8d3ad1f02ffca9503fa85aff518fc1d.dat create mode 100644 build/documentation/api/classes/OCA.Gallery.AppInfo.Application.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Controller.ConfigController.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Controller.FilesController.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Controller.JsonHttpError.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Controller.PageController.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Controller.PathManipulation.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Controller.PreviewController.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Controller.PublicConfigController.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Controller.PublicFilesController.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Controller.PublicPreviewController.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Environment.Environment.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Environment.EnvironmentException.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Environment.NotFoundEnvException.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Http.ImageResponse.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Middleware.CheckException.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Middleware.CheckMiddleware.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Middleware.EnvCheckMiddleware.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Middleware.SharingCheckMiddleware.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Preview.Preview.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Service.Base64Encode.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Service.ConfigParser.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Service.ConfigService.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Service.DownloadService.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Service.FilesService.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Service.ForbiddenServiceException.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Service.NotFoundServiceException.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Service.PreviewService.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Service.SearchFolderService.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Service.SearchMediaService.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Service.Service.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Service.ServiceException.html create mode 100644 build/documentation/api/classes/OCA.Gallery.Service.ThumbnailService.html create mode 100644 build/documentation/api/css/bootstrap-responsive.css create mode 100644 build/documentation/api/css/bootstrap-responsive.min.css create mode 100644 build/documentation/api/css/bootstrap.css create mode 100644 build/documentation/api/css/bootstrap.min.css create mode 100644 build/documentation/api/css/jquery.iviewer.css create mode 100644 build/documentation/api/css/prettify.css create mode 100644 build/documentation/api/css/template.css create mode 100644 build/documentation/api/deprecated.html create mode 100644 build/documentation/api/errors.html create mode 100644 build/documentation/api/graph_class.html create mode 100644 build/documentation/api/img/apple-touch-icon-114x114.png create mode 100644 build/documentation/api/img/apple-touch-icon-72x72.png create mode 100644 build/documentation/api/img/apple-touch-icon.png create mode 100644 build/documentation/api/img/favicon.ico create mode 100644 build/documentation/api/img/glyphicons-halflings-white.png create mode 100644 build/documentation/api/img/glyphicons-halflings.png create mode 100644 build/documentation/api/img/icons/arrow_down.png create mode 100644 build/documentation/api/img/icons/arrow_right.png create mode 100644 build/documentation/api/img/icons/class.png create mode 100644 build/documentation/api/img/icons/constant.png create mode 100644 build/documentation/api/img/icons/favicon.ico create mode 100644 build/documentation/api/img/icons/file-php.png create mode 100644 build/documentation/api/img/icons/file.gif create mode 100644 build/documentation/api/img/icons/folder.gif create mode 100644 build/documentation/api/img/icons/function.png create mode 100644 build/documentation/api/img/icons/icon-folder-open-big.png create mode 100644 build/documentation/api/img/icons/icon-th-big.png create mode 100644 build/documentation/api/img/icons/icon_template.svg create mode 100644 build/documentation/api/img/icons/interface.png create mode 100644 build/documentation/api/img/icons/method.png create mode 100644 build/documentation/api/img/icons/ok.png create mode 100644 build/documentation/api/img/icons/property.png create mode 100644 build/documentation/api/img/icons/search.gif create mode 100644 build/documentation/api/img/icons/variable.png create mode 100644 build/documentation/api/img/icons/view_source.png create mode 100644 build/documentation/api/img/icons/visibility_private.png create mode 100644 build/documentation/api/img/icons/visibility_protected.png create mode 100644 build/documentation/api/img/icons/visibility_public.png create mode 100644 build/documentation/api/img/iviewer/grab.cur create mode 100644 build/documentation/api/img/iviewer/hand.cur create mode 100644 build/documentation/api/img/iviewer/iviewer.rotate_left.png create mode 100644 build/documentation/api/img/iviewer/iviewer.rotate_right.png create mode 100644 build/documentation/api/img/iviewer/iviewer.zoom_fit.png create mode 100644 build/documentation/api/img/iviewer/iviewer.zoom_fit2.gif create mode 100644 build/documentation/api/img/iviewer/iviewer.zoom_in.png create mode 100644 build/documentation/api/img/iviewer/iviewer.zoom_in2.gif create mode 100644 build/documentation/api/img/iviewer/iviewer.zoom_out.png create mode 100644 build/documentation/api/img/iviewer/iviewer.zoom_out2.gif create mode 100644 build/documentation/api/img/iviewer/iviewer.zoom_zero.png create mode 100644 build/documentation/api/img/iviewer/iviewer.zoom_zero2.gif create mode 100644 build/documentation/api/img/loader.gif create mode 100644 build/documentation/api/index.html create mode 100644 build/documentation/api/js/SVGPan.js create mode 100644 build/documentation/api/js/bootstrap.js create mode 100644 build/documentation/api/js/bootstrap.min.js create mode 100644 build/documentation/api/js/jqplot/MIT-LICENSE.txt create mode 100644 build/documentation/api/js/jqplot/README.txt create mode 100644 build/documentation/api/js/jqplot/changes.txt create mode 100644 build/documentation/api/js/jqplot/copyright.txt create mode 100644 build/documentation/api/js/jqplot/excanvas.min.js create mode 100644 build/documentation/api/js/jqplot/gpl-2.0.txt create mode 100644 build/documentation/api/js/jqplot/jquery.jqplot.min.css create mode 100644 build/documentation/api/js/jqplot/jquery.jqplot.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.BezierCurveRenderer.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.barRenderer.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.blockRenderer.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.bubbleRenderer.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.canvasOverlay.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.canvasTextRenderer.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.categoryAxisRenderer.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.ciParser.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.cursor.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.dateAxisRenderer.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.donutRenderer.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.dragable.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.funnelRenderer.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.highlighter.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.json2.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.logAxisRenderer.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.mekkoAxisRenderer.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.mekkoRenderer.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.meterGaugeRenderer.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.mobile.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.ohlcRenderer.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.pieRenderer.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.pointLabels.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.pyramidAxisRenderer.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.pyramidGridRenderer.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.pyramidRenderer.min.js create mode 100644 build/documentation/api/js/jqplot/plugins/jqplot.trendline.min.js create mode 100644 build/documentation/api/js/jquery-1.4.2.min.js create mode 100644 build/documentation/api/js/jquery-1.7.1.min.js create mode 100644 build/documentation/api/js/jquery-ui-1.8.2.custom.min.js create mode 100644 build/documentation/api/js/jquery.cookie.js create mode 100644 build/documentation/api/js/jquery.iviewer.js create mode 100644 build/documentation/api/js/jquery.iviewer.min.js create mode 100644 build/documentation/api/js/jquery.mousewheel.min.js create mode 100644 build/documentation/api/js/jquery.panzoom.js create mode 100644 build/documentation/api/js/jquery.splitter.js create mode 100644 build/documentation/api/js/jquery.tools.min.js create mode 100644 build/documentation/api/js/jquery.treeview.js create mode 100644 build/documentation/api/js/jquery.xml2json.js create mode 100644 build/documentation/api/js/menu.js create mode 100644 build/documentation/api/js/prettify/lang-apollo.js create mode 100644 build/documentation/api/js/prettify/lang-clj.js create mode 100644 build/documentation/api/js/prettify/lang-css.js create mode 100644 build/documentation/api/js/prettify/lang-go.js create mode 100644 build/documentation/api/js/prettify/lang-hs.js create mode 100644 build/documentation/api/js/prettify/lang-lisp.js create mode 100644 build/documentation/api/js/prettify/lang-lua.js create mode 100644 build/documentation/api/js/prettify/lang-ml.js create mode 100644 build/documentation/api/js/prettify/lang-n.js create mode 100644 build/documentation/api/js/prettify/lang-proto.js create mode 100644 build/documentation/api/js/prettify/lang-scala.js create mode 100644 build/documentation/api/js/prettify/lang-sql.js create mode 100644 build/documentation/api/js/prettify/lang-tex.js create mode 100644 build/documentation/api/js/prettify/lang-vb.js create mode 100644 build/documentation/api/js/prettify/lang-vhdl.js create mode 100644 build/documentation/api/js/prettify/lang-wiki.js create mode 100644 build/documentation/api/js/prettify/lang-xq.js create mode 100644 build/documentation/api/js/prettify/lang-yaml.js create mode 100644 build/documentation/api/js/prettify/prettify.min.js create mode 100644 build/documentation/api/js/sidebar.js create mode 100644 build/documentation/api/js/template.js create mode 100644 build/documentation/api/markers.html create mode 100644 build/documentation/api/namespaces/OCA.Gallery.AppInfo.html create mode 100644 build/documentation/api/namespaces/OCA.Gallery.Controller.html create mode 100644 build/documentation/api/namespaces/OCA.Gallery.Environment.html create mode 100644 build/documentation/api/namespaces/OCA.Gallery.Http.html create mode 100644 build/documentation/api/namespaces/OCA.Gallery.Middleware.html create mode 100644 build/documentation/api/namespaces/OCA.Gallery.Preview.html create mode 100644 build/documentation/api/namespaces/OCA.Gallery.Service.html create mode 100644 build/documentation/api/namespaces/OCA.Gallery.html create mode 100644 build/documentation/api/namespaces/OCA.html create mode 100644 build/documentation/api/namespaces/default.html create mode 100644 build/documentation/api/packages/Default.html create mode 100644 build/documentation/api/packages/OCA.Gallery.AppInfo.html create mode 100644 build/documentation/api/packages/OCA.Gallery.Controller.html create mode 100644 build/documentation/api/packages/OCA.Gallery.Environment.html create mode 100644 build/documentation/api/packages/OCA.Gallery.Http.html create mode 100644 build/documentation/api/packages/OCA.Gallery.Middleware.html create mode 100644 build/documentation/api/packages/OCA.Gallery.Preview.html create mode 100644 build/documentation/api/packages/OCA.Gallery.Service.html create mode 100644 build/documentation/api/packages/OCA.Gallery.SharingCheckMiddleware.html create mode 100644 build/documentation/api/packages/OCA.Gallery.html create mode 100644 build/documentation/api/packages/OCA.html create mode 100644 build/documentation/docpublisher.sh create mode 100644 build/documentation/index.html create mode 100644 build/documentation/reports/code coverage/index.html create mode 100644 build/documentation/reports/index.html delete mode 100644 documentation/Album configuration.md delete mode 100644 documentation/How to ignore folders.md create mode 100644 documentation/developers.html create mode 160000 documentation/wiki create mode 100644 phpdoc.xml diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..fe7f0485 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "documentation/wiki"] + path = documentation/wiki + url = git://github.com/owncloud/gallery.wiki diff --git a/.travis.yml b/.travis.yml index 4d9efa22..d827b8d1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,6 +10,8 @@ env: global: - CORE_BRANCH=master - APP_NAME=gallery + - GH_REF: github.com/owncloud/gallery.git + - secure: "cLmMqrbVZrvn2GAoVs6JWa5h70tzrAISjPZUfENjl0KYT6B84z3B94W/dGU+I2mxwvyBqEP+x83Bih2CxEflqc7tJmdqC+MM/ZZiigPX7RCjq5XHbzUpPpMbC8MFxT2K3jcFXUitfwZvNaZXJIiK3ZQJU4ayKaegLvI91x1SqH0=" matrix: - DB=sqlite @@ -26,14 +28,17 @@ before_install: - wget https://selenium-release.storage.googleapis.com/2.47/selenium-server-standalone-2.47.0.jar - java -jar selenium-server-standalone-2.47.0.jar -port 4444 >/dev/null 2>&1 & # WARNING - Takes a long time to start up. Keep here - # Download the latest PhantomJS - - mkdir travis-phantomjs - - wget https://s3.amazonaws.com/travis-phantomjs/phantomjs-2.0.0-ubuntu-12.04.tar.bz2 -O $PWD/travis-phantomjs/phantomjs-2.0.0-ubuntu-12.04.tar.bz2 - - tar -xvf $PWD/travis-phantomjs/phantomjs-2.0.0-ubuntu-12.04.tar.bz2 -C $PWD/travis-phantomjs - - export PATH=$PWD/travis-phantomjs:$PATH - # Ghostdriver does not work on Travis# - phantomjs --webdriver=4444 --ignore-ssl-errors=true --webdriver-loglevel=DEBUG & + # Ghostdriver does not work on Travis - Download the latest PhantomJS + #- mkdir travis-phantomjs + #- wget https://s3.amazonaws.com/travis-phantomjs/phantomjs-2.0.0-ubuntu-12.04.tar.bz2 -O $PWD/travis-phantomjs/phantomjs-2.0.0-ubuntu-12.04.tar.bz2 + #- tar -xvf $PWD/travis-phantomjs/phantomjs-2.0.0-ubuntu-12.04.tar.bz2 -C $PWD/travis-phantomjs + #- export PATH=$PWD/travis-phantomjs:$PATH + #- phantomjs --webdriver=4444 --ignore-ssl-errors=true --webdriver-loglevel=DEBUG & # Getting dependencies + - sudo apt-get -qq update > /dev/null + - sudo apt-get -qq install graphviz > /dev/null + - phpenv rehash > /dev/null - composer self-update - composer install -o @@ -46,7 +51,7 @@ before_install: before_script: # Make sure Webdriver is running - curl http://localhost:4444/wd/hub/status - - phantomjs --version + #- phantomjs --version script: # Test lint @@ -55,7 +60,7 @@ script: - sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.4' ]; then find . -name \*.php -exec php -l "{}" \;; fi" # Run unit, integration and API tests, with code coverage - - sh -c "if [ '$TRAVIS_PHP_VERSION' != 'hhvm' ] && [ '$TRAVIS_PHP_VERSION' != '7' ]; then php vendor/bin/codecept run unit,integration,api --coverage --coverage-xml; fi;" + - sh -c "if [ '$TRAVIS_PHP_VERSION' != 'hhvm' ] && [ '$TRAVIS_PHP_VERSION' != '7' ]; then php vendor/bin/codecept run unit,integration,api --coverage --coverage-xml --coverage-html; fi;" # Acceptance tests, using Firefox, without code coverage - sh -c "if [ '$TRAVIS_PHP_VERSION' != 'hhvm' ] && [ '$TRAVIS_PHP_VERSION' != '7' ]; then php vendor/bin/codecept run acceptance --env firefox; fi;" @@ -63,6 +68,13 @@ script: - sh -c "if [ '$TRAVIS_PHP_VERSION' != 'hhvm' ] && [ '$TRAVIS_PHP_VERSION' != '7' ]; then wget https://scrutinizer-ci.com/ocular.phar; fi" - sh -c "if [ '$TRAVIS_PHP_VERSION' != 'hhvm' ] && [ '$TRAVIS_PHP_VERSION' != '7' ]; then php ocular.phar code-coverage:upload --format=php-clover tests/_output/coverage.xml; fi" + # Generate API documentation + - sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.6' ]; then php vendor/bin/phpdoc run; fi" + # Generate Wiki documentation + - sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.6' ]; then git submodule update --init; fi" + # Send documentation to Github Pages + - sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.6' ]; then cd build/documentation; bash ./docpublisher.sh; fi" + matrix: include: - php: 5.4 diff --git a/build/documentation/api/_structure/phpdoc-cache-13/phpdoc-cache-file_3476ab6d8d8e2b493e4ec95785943936.dat b/build/documentation/api/_structure/phpdoc-cache-13/phpdoc-cache-file_3476ab6d8d8e2b493e4ec95785943936.dat new file mode 100644 index 0000000000000000000000000000000000000000..7369fb3cdec5cc57609971b98cc5fc706e9a6435 GIT binary patch literal 9933 zcmeHNU2oeq6zyyLD+r?xZLlW(h~q>lwggF64A_z&EeZ_q3oX$$5n0kmDxDYjzwca9 zl4Zv-vRDR+wSB0g50aPX9^QL+sT;3*>NS%|auxgOR756LgDatZB@_DdR~d@MWz*|) zyhrWzz2>X^R}-!$%`@$FJ6>~m!g=fDRP;MN-X8kA6ZG5t;b|~DJsutfqD$|&RtYz* z)v?#~69Y|N>{8Sc`9&l9N`b<6OJ5k#a#z|trXikXRE7o(9-G5aVYp?Jt{tr_fh_ab`` zO3OH6T^1|qE#yY11NKP>+xYV4_Rrt0Kid8evH{O|Y9_H_H=%rx8040#_#gHj2Kr>+ zxs1@oi0hd?@Fzd#jr=&7DLI~)m3Ez0`{*71>*2-2MkC@=p%d;4c5`_#_~>RjxGZ2i zYvh1jhFt4xI^;yXcqtq6IyS;%pJ$0+KG#M@V-`o@jD3yOy=HP`XV^SXxZ=|$vp)i+ zYsQseJk&9hm{J-5P8s24;OpB#xyA_8S}GRBhRuY*8xx_V5kWp-OyZu8tL9;6>w0q@ zS(yS8e;W}6nyub{Y&7($Fm!G2-3gPb2y*}zv|;fGGYOfT;vLXL#Zx=$ zQ5@#{2xWB7#_|D=x$g^LYT}|dIMYrGYiDuKBE_^(gy`!q_PHSnaX@G$Oo>DZjdey( ziGY5p6fR-MFr7Li0dJC6a~=9cXCuL3K1`v8`2=*DB(VatEPuSNsW9A)2NxN3AAyg| z-m|`g8KHy~)bg;g=N2OyrIBxK9}8oFep5{6C-yoY4S!NcZ`osGZ%!Z?O?HVSZ9>I{x++#yn zIr)Gb@T_BqV;E6}@>kWsE8)R1tm`N+O+rEWu0Bv5xA+iCpZlhHHuPFB&k=DXBOd0r z+Pk8Qn_8mcL?|O`@NB+p9ABmanJw5JuzZ2$(ZMnS=v6Y|4?FM@75Y!9puBbufM;v` z8GguQg+YM!3*R^lAEcH;8A>xF&OoZTkZ1|yyvNnp>ZR@B=w?$Xf~&;?c2weVk&V5C z$ngRZ=cwkH@;d#3f(Ds>dt>1{30`CA5-3%&kyORtlTCqT8!eqE3_CsrV#L!BE9IKp zc4XJ(aCRr4$V5a+&#j<#wqo@ct|Si@zRH%?Ur49q7<5WMPG(XDp)2^fge!(|-YXJJ zHn=k=6D6h2GD~$jopNQlkd2a=8)Q-$8J=1l!KDA1=&4=X89iE7+ZGr11TqBEA>{K3 zBIR!H&1`+Ug&>rQRc(D{nY<8wA6&R4yuko+OD-UO(7j%|FL2#8-Md%}o2BS?Np2`1 zD~W#)yFOwsFx@$+k!~!hH*J)@LtfMVX(i+KkesTd_gc+g+7Z4b2$yp;dS6JwUAsBY zwDWW4ypRGYTB_PHxw zq&Ri@thlVN+~}w~%8MT_D8H_T&JF-rtJ(;Pr*#v+gSl16KidR=fkvgG3QiB3>r2F? z_e-^w4r2R;gDl%hoQRddbRCU%Gx_npMnu3yLta%|;+1RoDB?1vfUt;d?JZ^^K#NJX3L z=Y8ElFz+aGq1)n{k@_&)vTm?!R26m+t literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-13/phpdoc-cache-file_350a0c08c3377ad19201dfc0fc5f6473.dat b/build/documentation/api/_structure/phpdoc-cache-13/phpdoc-cache-file_350a0c08c3377ad19201dfc0fc5f6473.dat new file mode 100644 index 0000000000000000000000000000000000000000..f7c618e4f91bdaadf89d69fd95fb562949d61397 GIT binary patch literal 52881 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 literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-23/phpdoc-cache-file_e1b15e88afed87f9c3281c683fd9bab8.dat b/build/documentation/api/_structure/phpdoc-cache-23/phpdoc-cache-file_e1b15e88afed87f9c3281c683fd9bab8.dat new file mode 100644 index 0000000000000000000000000000000000000000..720a78d10694645c47e85e67700c5bab39c40409 GIT binary patch literal 34912 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 literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-26/phpdoc-cache-file_81da563b51cdf6c43913f8bef9e41574.dat b/build/documentation/api/_structure/phpdoc-cache-26/phpdoc-cache-file_81da563b51cdf6c43913f8bef9e41574.dat new file mode 100644 index 0000000000000000000000000000000000000000..c428045502ac8df21a9816fc70a7053d09efa263 GIT binary patch literal 7017 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 Bh%W#D literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-2e/phpdoc-cache-settings.dat b/build/documentation/api/_structure/phpdoc-cache-2e/phpdoc-cache-settings.dat new file mode 100644 index 0000000000000000000000000000000000000000..27a65842caeeda638a8ab5b2ca878c0ad222cf46 GIT binary patch literal 113 zcmeabGBvbPD#$2s$xklLP0cIGFN$$VElw`VEC4YBit@8klS`09f>TRMGV{`lm8^`c xs*9}*jjfazv=}mree+W?(=t<2l&q7i46NZ2Wtqj9NtrpBC6!9nnO5f3wE*tiCN}^8 literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-38/phpdoc-cache-file_aa6ed79081b43f7d3dc149671f91df8b.dat b/build/documentation/api/_structure/phpdoc-cache-38/phpdoc-cache-file_aa6ed79081b43f7d3dc149671f91df8b.dat new file mode 100644 index 0000000000000000000000000000000000000000..ee4e6fbfacc73334b5c82ae6d1d33446709d233e GIT binary patch literal 6172 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 a4ReOJlAg+&w9ZdOf_WkwA#eQ`YTw^LrhtC{ literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-57/phpdoc-cache-file_f968717855614b873cfbbceec04d8d04.dat b/build/documentation/api/_structure/phpdoc-cache-57/phpdoc-cache-file_f968717855614b873cfbbceec04d8d04.dat new file mode 100644 index 0000000000000000000000000000000000000000..eb0aefa396a894c4659b6350c0306d8d0f2a1aa6 GIT binary patch literal 4117 zcmds4O>f&c5bfE&g3vKQ6U$Z{hYq?8oHkfs5eH~41$?1p$|53@DoLgF2Kn!OBqha7 zuP~TR)n(08dm&*WV`gIx z)BIhtDOKf0i&bu)>>Kpsc)ARXdIO+UTNaLi}WaB2+@JGJp zT>3ccypohjq?%}678_y}Vfgu_;>LRGX~B#kSIT~LSky*8G*}S+&2m75!+X#kC+;75 z4wN{c)P{Io2xhp6CNnxbet}|B1-w!RcSK{yuCYg3SiZ()M*H;s;Q{93FpM--%MQ(g zyx>-q7aXPu0@*1WQy1R0Zh#y> zHZY`Q8am_a7?SX;btG_+`p28085vVj+0q#4cX&xM2+eK3^mqpZ-7N; zsb1_}f7X~Q6lNWBOBP?fTO6(Dw*)1Iub=ze-HH+SfnkUJ?@P_Ek0PYzsWiF6hM7i~ z-0d1hI?<)XNdg`Oq4C}u{Z^LT_4AS}&Ch+O{|j~63T&4+IsN;+=YmV~D~T7(wvUkR na=53o{}|M+{0+eKAM@8fn_e+tU~pT!8n0+T<7)O#xB$Kbi|0Uc literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-61/phpdoc-cache-file_36b67f3177c9ae70b4e213abef535301.dat b/build/documentation/api/_structure/phpdoc-cache-61/phpdoc-cache-file_36b67f3177c9ae70b4e213abef535301.dat new file mode 100644 index 0000000000000000000000000000000000000000..713a09ab34eba2fcab247b40224ac2eaf8f6d3b2 GIT binary patch literal 21014 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 literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-78/phpdoc-cache-file_9408c95818cf78fa445b98c159658df7.dat b/build/documentation/api/_structure/phpdoc-cache-78/phpdoc-cache-file_9408c95818cf78fa445b98c159658df7.dat new file mode 100644 index 0000000000000000000000000000000000000000..a8caa53e976dac874444d8bdbd083a6b1225c9f5 GIT binary patch literal 21690 zcmeHPYg5}u7M-v5ujqAA14$*pFCd774ND%AtxQ5eHdR|gDkWQOqe4g?NhafA`R{vf zcS~x?l5yfTaT2C#X0X)Vx_$2Z_T!z^*|i#@v(fXQKfd689E7LOdDIWx5&ikn^?3HP zVYS=VRb=g0jbHBna%M+ojlIa~w5`T2-`U#jI@^O@x9L3Y_L|&jZg+Xl>9?J2-tSU7 z*=uCSvRBJ$^aDQ*1JC2(CjK0_!|cH$kVKt896l8V>(T4G}r`B>BajqH(~?KfZ_k1+vk479X9qI9**)b0vu@lZk=fihL|9$=Tl^Fk#`rtEr9G?Xtd*`{A zEHfzMnYLk#R_51uib2Iq0MH!?%NkU8rgl$ z-W?vCzLJwXJxtNttJlX7y*xU7ea!zH^C;fSp1cW$Lmp~v4o0JwA%^@Mgy*?Yl0k9} zev9K#+By6B2@fxU6!iz=)UV{L)6I@T4oE(y?Gol4dUg~sIY>641RBiw+#Xg+FBv9yv`JA$JH>0s1kI$DtoF+h<@slcbG9 zTYzkbp*=~PDoN=DfydS&&vkfo7JSZLhhiuuIz5r{^uQl`-v7jteQH?3$RUp<7~`dC^Tv(h4T<*VrfMw_dARTJ-gvmtNSa#gDjE5@ z@qqoYp8Q&8Pxo2+)sKpIJ}|lDCzr#M@n{r;aYl_By-nU7Ksrg=osG0Vx`Xo<+;Q#q zlaW4)JTt{K)Y#nlJ#DYy@_?-ssgT4e=&PpifUS$~$Mk(UyNsTXpidW-=Nx_pq5?|Y zf$&!Ho9yHR9F~Nc!F{tH=Mb7?!kHXMgCdxop_si^w2~MlBB3l~s@yjKD)ep&i9~1! zZVBw zr)+%!Jkd@HYORbW*jr8{5yUk$_o;T01=n>7Qd%-yTn0 zVH_J)ivq33BKmP-eu2)mwXL2d=23hL;n1n>`RO4-EoFm669j0oiL`&>S<`AjX_arJ zCvAL8w90w^e4DP-AkQh9CxhmiCvRJzO4DbwXe)DL;$F#7*HNazSJP;ndg;G5;|h}#mM87%9sOD%97oKON6y-?DecB z?dfWbq_+|;b+W~5RT>WnFhG2~RE@x_H53i^{5ux^l3 zSS68WBNog3H0v{0K+C7g`GNS<`*{(!tL5G^sxdjccrV}yO>3{rlABjB0 ze>%YeHOYlUcII_+*W^zMT^0P0wOKME6^2v(x;Wp3V*@QjjnRQqaA(^84>r;en`%uW zA8%M)Ap+9kMjTZbrTh>IF=G-1iCRB!Qe{0lI<#IKA3xk`Hk&(Hlbo_B+XK~)Q68Xx zN|7kx&S&?HJqd}503zmDartw@;SiwY(cl@_v@BboOZ&ML=DQISv4El zB{zO⋘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 literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-9e/phpdoc-cache-file_ebbf4d20f82d02db9b814976aef54c29.dat b/build/documentation/api/_structure/phpdoc-cache-9e/phpdoc-cache-file_ebbf4d20f82d02db9b814976aef54c29.dat new file mode 100644 index 0000000000000000000000000000000000000000..07643e9343c081f1567dd3062b609ad1542c6f45 GIT binary patch literal 44943 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 hS#Pv!_-C&~f~8f?ijXTkq literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-bc/phpdoc-cache-file_e5f25840eb9c9f1744f456616df37f37.dat b/build/documentation/api/_structure/phpdoc-cache-bc/phpdoc-cache-file_e5f25840eb9c9f1744f456616df37f37.dat new file mode 100644 index 0000000000000000000000000000000000000000..5f0b8856ab93172e5edfacc1b17ed87c7bc9f509 GIT binary patch literal 8621 zcmds6ZByGg5boFHS7Q(Fp8}ZAC8@q9Vkcn@As@E zJI;#(otS<&J^+@b)oSDlJ9ArFV8!_cZ#tx|1JuJ0f0i`{aqw%h3M?b`jl{Q<8YRI5&-TpQ3ly=u%O zwW_*rmF&QeWZ-#1?))7F{xFKhLdrmHLmyfJ&9F}xOr$O7xl%7$$e@L*cNA?+D4Fpee68o;cd8W4{3#3 zWC!D0>0S<_#qFx)N_`8z8gmn8H%QOgDHeS`65*KJf_09Xy${-wy`#iGhsEL~6s+~# z7UKwpG0&Z&(_V8tK9N{{6UeLH?{MLvn!5B=@6%bQ-NjA;yphP5ZrJj#T^aa&f@Ars#t;XAA!L_;>U z3*#7Tj@{|VD;5UqMlfFhZc)IXFgYTU+>JsS;EsbSBf)@x5g;}afQ=Kzo`n;x_~q;& zr_wQNr>JDHPly;YcZ(v1-4%-k3W)+iYRusf)=P}Qo{QLV3cm1lNP9#>9#MEm5ly5| z`tmE`vw;joYF@I6#A?xcDogv3UhEVLV;w<*iEk4^n2O|$WjefswuQp;Sc^9)^|sz# zis*}0Z{y`5O|t_>us4j3YFTIJ&GWBk7a!Z_t!}&d`QohA{nqMUw7T6+7kDZZ+yUE2 zo!0fki2Jq(1}w(Yyt}ce@Z(2H2exEU8iZJ&Pq19KcIW)!r1Q0XOxoYCR4EgJtK^?_ zy6-<8AGg|CJ~l8u@x{%IUpDZn@F)E$yfC(Y!QQ-OvEg6oSK-9AVQ}?oz&*ef3;t3s zmF@9Jj<_%07ZnFA4*7Q9A5cwZ@7}azs3@kWsQKltjS)Aa^$sBP{0DE{#EU z0vNSf*(yz8Oe1xxL`a~2k&8;br8J|K;%yqGG)4+8Uok^WN;r0o5tDX4y{l_6kEbmq z5SqsV=OMUMsF{?>Y)U9J$pn#-x~on+RW+8nV%7aUGHpeB2T5q+!W5?Zp=OT$ps2XU!4Qi#(1o4%@|i@b_8Euf^}%>RI|2B6{Iy3ZHSmDex|9Y zH4Zm^ea%bvNrUNR%B;#f`iSOYtZXN%1gkmN^o%72cdT%~TA=GN96a`HX!PgX}eNVJg3@{sk z+UJI}B+_AGm6$cAXG(}6&p68;=nBigu5K}MbOl)=>(Yr_(N!&J+83%^m@)C19mkX8 zg-5p-%CfVZp0aZmJWOOhiK8ilq)hi7sJ(nn^kn1=God}u?w0?RLWwe)n3n)S5#T2;}AXzC;ddZHSJ{t=S+if z*Z&Y_=s-d>eua+@Yo}VX>l|SijL+sBD$kdGe_5mh)zN506Qe6;IgWcC;6uMpM>w=t z{7{n}iIp-qC&v#stG?bSEwnv;d4HlZ9kRauas!vr9M14xJte~&M zPe1X!i){S_OyGi=ar^YE4oze_`!Ox+Yuyu_*A!~WH^BUWvu2)vZ&ONTfu;&zEr2HZ z9{EHz(-`?R=R;7;;^V0gM}SD@=rz+|Qn#;ZuCz*7V8EPI>UaWjP~|!@(*L1M_z#Ye B`6d7W literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-c3/phpdoc-cache-file_e74e4d5e9a43ec7403ccec477e89a6ea.dat b/build/documentation/api/_structure/phpdoc-cache-c3/phpdoc-cache-file_e74e4d5e9a43ec7403ccec477e89a6ea.dat new file mode 100644 index 0000000000000000000000000000000000000000..ed833fb3377bb72ad43680b4ee65fa68a96385ac GIT binary patch literal 50337 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 literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-c4/phpdoc-cache-file_6254afe5f6cfbefa094d9a3c8b7e107a.dat b/build/documentation/api/_structure/phpdoc-cache-c4/phpdoc-cache-file_6254afe5f6cfbefa094d9a3c8b7e107a.dat new file mode 100644 index 0000000000000000000000000000000000000000..152a34ca490e62298e5022fcb57a101be524b34e GIT binary patch literal 21704 zcmeHP`%m1s7T#ZH{t9bUZE1BW^MXRy?Jc4YA@zZ1?@CufTA9Q%6E!4rlMF1km;e2K z$957YGYPaY6uPXmyG-KP$KQE<$9D438SOZ|`E33wau=r}Or!Ytl}Oy!pVOaj{6G{x zd(Lp^d`+C^PVbkezsz_t>+L4aXz29Z6F%7)4+rD^aC>KqkKKtFjK>3SYkOG3B8+ithJNa)U?R8w;NA@am-e(m60G@Xh#Z&f`1Iz02^C?stk8-JsvMt467 zQ|^ZeI~AClm$37h@6H&8XIfRb`TPUm*sU}-Cb0aBC}vuHPQ$bOOpw8r ziv>6!)WU^BP;>g1y`1xypK4)q;mlixVC<10h}lL9!5*nW=@v~|8RcXVx+z)XpMScU z1Z&++Cqv>N_`7Zpy0_H%6M&7!Q@F_b3k@gxJr^DbWj76Rse$p+XryGO`x#`NOGBAQ zB3;C=A@aHqmdQ?e>dv5Ad1dOKiI5$opcsQ=LznlZz4nhZE>&va>bl*rG_ieo{IEH5BDaHP7k~_Esusz z&gFMTLlGEhd?8`&$X0}g!q>oT{Y8DBaJo*Xv$4V6^Dl&r_zOwsII^8lOw@BeiGoa zno*~tA(S(qIdv|X2oPGn(%+d)K*@Wd_n9!w5MAr-^YC#B>0AMqCQXwhy(g*@Jbel2 zp>?))oWl-t$~2(I*NCkeplGXRgkcb4AUTad)|Sbx)p6PF6!GC*G*v>0I7Wo#p~qtG zCn8~-^)LrEA+zW)!U(_{W?@>Sibw1bA~B8q&E}Oyu-uba@=-KI1Ydt4n5u^O+Visl~ zYX)hw3{u`-RhpuIh0a-t$m&gF#a|Xnkwq-wl zDo*h*cSdv#yoLgo90#2pmy+TNO_PXb=l8Li_t`to7%@LyPbt>+cL7FAeG1Qrgoqe8DzFzs400qO(~ z*bWc(o!3W4>zn<4|9R1*WbZmoAaACq28b$X5vA8>)gPs9nPnBqemEl$g!fuSe)3zL z+Ko!&UdOmGz;2FlrI}WZmULBVpmWt-33lU$VAqyZ=gzzdZPz;UX9{-z3crL{rK7*i zh=(4kmh&xa`XN@v$al9AE6H6NVkJ4ZxpH;AfQcNb3d(yODwiy_Qg%2_Hp!~38}kRc zip$@X_(-h!fef}9m*;{ICgl`$Xl^$4(?- zuT=zAWzZ@N&uIfxna16KVQ3wOa)7M@urs<-08p$#)uzrewRSDN-INuamiC&iMJgyb zEgcy9n-|R4s=PjmC(*D|FAq11gABIoWhk;fD$^ds0k-&X!pjWI%J2|I)gnykw7?A& z%;e_k$fcEJtc&v1d4LYYG@a{|5CfZP(W zm!I>Ej4^4j?)4R-zRFC^5Gxm?OHj7dJy^Zs;WpQo=!B5mRe6JBQtIUnEZ{4)YjYf! zD;=Jen*&usYv}9tiM=Lt>J)!#LU(WLIDcyeXX->fEE_TGL?>F3e(ha0ar$Vi7R7u{AP?^1ZV3Bx_hLq23hT+_+#yYG5^$sXU{DahsD zhi_MWvJ{?TXEZ8mkh`$x_dt=p?Ib4^3oCv9K2fBfWSMh_bs{5t=5OUakgl5~T|1Q5 zOHr+5?fXEw)SGum*jTgl+P&}e^O7!gM0B|})itR+keroYc_>)Ly6VG*1qOX3?aD=~ zz7lPZb`AQL-vhZ9>zvKJYuqn9?;niVHI_ZKr+Di%U`Ig zj~0VI0N$dReGC{D!deGJg374{s1KGv%}l?77Lcgv%7E4ykzW)OeAPsi_ literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-c9/phpdoc-cache-file_f5475468b7c6ebdf05639060d22b13de.dat b/build/documentation/api/_structure/phpdoc-cache-c9/phpdoc-cache-file_f5475468b7c6ebdf05639060d22b13de.dat new file mode 100644 index 0000000000000000000000000000000000000000..ab093600c5b70e3f84a2f4f7a111431361aa44b0 GIT binary patch literal 27455 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 literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-d4/phpdoc-cache-file_baa89daddc45c3a4175f5beb2f61d5c6.dat b/build/documentation/api/_structure/phpdoc-cache-d4/phpdoc-cache-file_baa89daddc45c3a4175f5beb2f61d5c6.dat new file mode 100644 index 0000000000000000000000000000000000000000..f270d4ac3e756fa959c8fa5dc70f974340983865 GIT binary patch literal 73372 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 R81B-($*YW+Ju@=h{r|c2C^Y~8 literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-d9/phpdoc-cache-file_079bbe455bfa9aeaf363ae1bc6415ba0.dat b/build/documentation/api/_structure/phpdoc-cache-d9/phpdoc-cache-file_079bbe455bfa9aeaf363ae1bc6415ba0.dat new file mode 100644 index 0000000000000000000000000000000000000000..3f7d8376f7d5db039aca6fb28e243796fac2cb84 GIT binary patch literal 5138 zcmcgwZBH9H5boFPudpIc8xVP?+;wTwBHHUAQQ&y_a4J>hY`lrZ#!hW7l(zi$d&aw) z7YYT5P(Bc1&y1g$d1gH3AnLw|s*};=t&X#?P)?h(x5CCoPUz3SWh!Q0t5K&DeYeq{ zQT5r{vk|wW>XwbVov7OH@YZ0n&->3eMZ2|`@Fa;lFWREN5htzwi-hEItqFHttNlEx z^2tQ1L^tu-00a^O7?`#?GqIrWozBKzQT63(YzNJ?wScWLeW`X*oefx>4SAXhbH!jF zl`(fxD@c&g$w*q306oJe_Jp!xz%n%uhPjbo+espfX77a(hNtW>>qCg`<$~-&7z#L$_t4@4!P0a*h_$o3G5rGU?So6 z$~NLrkBpWYN4hT++n!8BI_8SK1cpng25(B$My$uA;B{g>xiWG%ayJg@wAveW{Ca*v z>W1-ov1Sk`J{ESuW5Et~w$I+@(L4i`U8H3z2r^4Mhi9iwrue#oII~wwiA#c8M!dGV z6|BTqr|o)gDBO-#j!Q(=Z((&G=a4{L?|sRTuv!RxS`0}yGija&Fm6$b&fYye+M8~B z`E*feuie_G^^zYSgvuD03|=6vC0h`eX0W381;8b82ooQJN+<^*!_TXp2TzFBgP_uE zvSV$WR6}+te6SNBBicY;4n5BrpqOAI>=ukt*|;yvx);lry`f8)rc6547oeeaAR$04 zngR}OK+KSEbPE7v-RR5_829`O^#8E z4A0}1)_blN78Mq*2A`;Arq$qizCY#G2d-eiK#Z|^j}Hd58FA-`zNh(s(&!9V7A*=L z%NBit*khfcU9@S6+?cy~R5}@=H|msnAwl$|K_wnVIO}B2S}iO(Y+heY_79KGK{*Li zTBTPk1q7I<)BKfTOLo)60jfuGv-3izfi}&) z9HPiw`B_Kz2Oh*{K*4&51<(DuMN<&XxxX7@sqQsVbk|hJ1a6ikcSYoUNRmi$K1X*tdsFZy0F~?DI-rTB zosT$Fc>e0$P9?X(R<{nKE@mRo^Y&3}N2AC4lvJZOO<|aeFe*tW#!%+@+D23*h82_4 zS$TI?x2~^oay!?+M3Nz8k3O*#efMTD{{aY+iaSZUW!p_M<-J~>-Byk_o zb!(qib99(X&v6YFT5macS!EAM!|gP{se%cwOCp5w#ECuxIv#wH$J{+;sZoZ}%#5D%h_ zUp1{0K0Mp@2hRB#b!U&rk{5HpK!95l)djyE_PU}l=Vc>|(aR$EwT#-o)nCxz#`Ep= zx8W1HOT8UYoW3}hM;XfGo%b9la}QS*LES}{4$69wF4M>F69p{i$M10t6>@_cPwgGi z0gRk><;RaJdH;B1yyhX@MFq&rT^~=-8T=T8JIH4JWyQx2S49cp(pqLCLzwayNQKuw Q2FSs?RM7wa==#0>AAKi(_y7O^ literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-db/phpdoc-cache-file_5923a4a6f5a28fe61e0e5dc2d55cae1d.dat b/build/documentation/api/_structure/phpdoc-cache-db/phpdoc-cache-file_5923a4a6f5a28fe61e0e5dc2d55cae1d.dat new file mode 100644 index 0000000000000000000000000000000000000000..03ba868642cf2c42a3e1579e8f5e8b92a15dcdc7 GIT binary patch literal 58545 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 literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-dc/phpdoc-cache-file_96f8e0097b917a6cc65c87561bd6889e.dat b/build/documentation/api/_structure/phpdoc-cache-dc/phpdoc-cache-file_96f8e0097b917a6cc65c87561bd6889e.dat new file mode 100644 index 0000000000000000000000000000000000000000..7d928a764de03d2c9d57f88034a2f10c73378ef2 GIT binary patch literal 8764 zcmeHMZExE)5bjs|R}e;kyr7LOJ1>pWb`6rY7_c@$T67qep`az&CL&83MaA_3|Mxvd zO19*eywnP?Ve5yak;voSb9c|(QRi;w$Zf=f_$>0$p$K)PuFgc_DH+p$-^)PE{%pAI zwtJhnhi>E9&a(ke294vy?X=y7({AyXM@NUw9_I(nUiYBoiB9jZ-F2Kj|G?|eI=d_8 z+U|1Ph8KleML{4`lO7LwDC0EXT1Me6RH98#4o4+Xsysn|JM9BJdi4`t*PA;#b+*Hz zQFt0esn1@pJ||&gJf#<31~OqiSitZ*ke&z=;j=XKg<^Uj*h#M^RKz}rP$(X-i?oYH z>=(O`-3XOH5!PXmB5BY|s9pA12($V0{NlHtKYcLrce4ZE@>CBZ#m)nHBXP(DSJ7YW z6%_PH!M8Gmh#pVI$*wnelW+2(c&uc9py&3rTh2b#H0$+{4@DAlPq6dTldBKb$g9&S zddKw~i?>*H&HJks8gW{2siB)5d@KOYZtL|LAzFj2mqMp1Oc-Yg?9l+oXXGK)gLMR5 z1~h}2Bidnh{VG@#24gnjp=LT_*Fwa2BCsnU%)3I5gb0lQFI5WBmcQbmZyxs|xQ7je zFS$Y1$Ze`9(oHL*nWSBZezcq9*AhGMF44WeQ}j}3y2gSvP3Hx_SuFpi%jaJ zL12x9>h|>KY&4MGfQ16VfE`@vgpDL{05Acgv?Ba`RNEPHxNUixjUC+)f6rDFR+~@Ym|@rCM5v59c@C;}Y|N35b)C@rgl!?E5Q3e;l1B0!*WqfE5MY^2Ld zvp<^iOLiZU-PT(uLMVTYW92$W)YjO<<6Y1r_wc;yw(!_yX-|ec$RFA5$RjPi{81-!ysaqhk6%FplA2g9Y5V5{r}U+!7iGGc>HP2#xmM z)NDPDD+mh2vjmoiQ37ODpZf)8U41q!K~YCTi^PjIq6h(`iPGt>8KyYG^4pZ{vxBWNS*KSJlxdly z!y#8D2C@?}RsF25N7rCZ0w6!y_|SgGDozbn0W*V*eG|wKCK39%k(&3{5525b*+dXZ zMXEBHjuk4yfl#Q8{<}cXOhmX-6p(MqebxVwUtQ!ch4;ym0K`j4P@YHbZPEXO@lXBX z9D(iQ?}xStu3N63Tib+TnfsPi*$M(+4|)5jiPm`6()%1|Iwb2U=G^;c+pO8ag^f_KF+Lxz@>4pzh>>MzIaWf>rj_dDQqh!c@Dw-{U1T_$BFj|z$0>l zOYQW%b`Z~cPKupY*tRphMd1;Y|6 zbZPfzZb$6In&KAO%(RuYoz~sGd@gw0^gT~r4!pBCqrHt6eyLI!jfRYaO`suEZ~9e23~*Il+o5 zt;(>wT~U30OiT*EXSi#v3NJffSDnr?#)Gyiz3`O>(&zM%>mALI4cFdE*^8KjZv3;0 z6mYniGAY8Xn>^eun|Me1TwI*G?=CN2?6+D@Yqq2mvDsiwpS$qAg6>;Q(?pj(x3}zu z2dQ9_32jDt;a@g0KaL0B9{_nThuM_I1;I7GZ>?SFvRQnNz_P?H$8?*VfxE+HU-=ff z$=tA5U8lij;6KanU|_3#U!WTYiY$H(G_G3O#yKr`u)@!TcYPx?T3ATtsg8`bZ}PCI z_{zkDHtK@?KDoBnX9;#+e{*6!h~C3?1;tj89r5YIzN!+;PegtYJN;H$9foU`in3Cx p@T0^i<40eYpAajA^E7Y&MMV{A7YOEw;)rX1}YR{0%pc5F-Ep literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-e8/phpdoc-cache-file_5bfbbad83d051b2294e9d8996e5f24bd.dat b/build/documentation/api/_structure/phpdoc-cache-e8/phpdoc-cache-file_5bfbbad83d051b2294e9d8996e5f24bd.dat new file mode 100644 index 0000000000000000000000000000000000000000..b9c5a24d0bdc82640ece70996257e18927b215df GIT binary patch literal 66397 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 S$4%N@MHO;Qvh%Z;S^p24H8#rt literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-ea/phpdoc-cache-file_98f41e4acfeac80f65d6397314947e94.dat b/build/documentation/api/_structure/phpdoc-cache-ea/phpdoc-cache-file_98f41e4acfeac80f65d6397314947e94.dat new file mode 100644 index 0000000000000000000000000000000000000000..7037391e50a6b01e5eb15b295acbe04d64c311cc GIT binary patch literal 18605 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 aXDYWPyG)Ymm{s&LUrCwB2mdbwzkdU_Q6~)m literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-ef/phpdoc-cache-file_5710016683fd2fd8ba4b04f1e15033c5.dat b/build/documentation/api/_structure/phpdoc-cache-ef/phpdoc-cache-file_5710016683fd2fd8ba4b04f1e15033c5.dat new file mode 100644 index 0000000000000000000000000000000000000000..83afac80624c641f0fd910b980fa0fc2183954c2 GIT binary patch literal 11231 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 literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-f3/phpdoc-cache-file_30f80a45a0568ee5353b7f108c62ba70.dat b/build/documentation/api/_structure/phpdoc-cache-f3/phpdoc-cache-file_30f80a45a0568ee5353b7f108c62ba70.dat new file mode 100644 index 0000000000000000000000000000000000000000..f887879eb59b0b09acea457ac8c45811a3f9a59c GIT binary patch literal 4115 zcmds4O-~y!5apa-VeJvAkWB&!4r)PssZvFd%B4~+jx(FJ*w~Bh1yYp%-m#rs!pB0Z zESH`L{un>cd-FUyqTK@;>EDQUI`q-dK8?1vw^C-( zXlQ7+L!&-)y77K{Z@?$L9t;Kt{bax0?{xbI9FjqM&#eo)a%RJ>eHwwh6Iw}k?5Z}U2YWO+{D!lw-RN}kA%b!2{Q|`!_%+j zCa&^@7PHj8*w<;td$?w|)sk!uCTAST=;U~O5iU7Cd&=OjRVL#))p#7aPeFQ^2J{_X zh;Sw`%S1z-Er?Zw;m_LwjP)n*j2S~Nl|6SfVBoWo1_BQjlcu zWzseWH^fZ}>95vY+;+h0xN0B^KH)v2XIvwy@mqRuoc0h%J*N)dx^191klCP+oN26g zCz*E-eoJd!XWbx#d7gnYj^K?YWIvZ*l zE_o)pjImTO8knp{D zGkdt^6cScs-hYB0f!0cIo)%wfOaD|MN2ZumU^dLpDsX9^O~S2SZ6Q<8_~cH{f~iKs z%VD_7%56i_!ke?Ckb89627MzARf&~%gMC|5oyQ9|S`}cZu~K^-RGWOKfqm^Umspf5 zyp>RV<*w;-HNR#iF@kyB>ejnO+(!NyY=PhFe?5wjmY25VE*oY_Q*tkB7-__ldd?2; zgCg|a8#7;7lIu|3v!wB{Z}vZMrZr%7#^k*3@4gsZnm@_7Fl_Z5(p(NVwDsqp>hk9b c<9Ytvm(wTa3dLL1t;TO?WW|;1|KR(70Chq_#{d8T literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-f8/phpdoc-cache-file_96293627148fd7f969d728e65a03b077.dat b/build/documentation/api/_structure/phpdoc-cache-f8/phpdoc-cache-file_96293627148fd7f969d728e65a03b077.dat new file mode 100644 index 0000000000000000000000000000000000000000..420ad1998cd84238e4c2697ce36b677a3e30cdba GIT binary patch literal 39483 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 literal 0 HcmV?d00001 diff --git a/build/documentation/api/_structure/phpdoc-cache-fe/phpdoc-cache-file_a8d3ad1f02ffca9503fa85aff518fc1d.dat b/build/documentation/api/_structure/phpdoc-cache-fe/phpdoc-cache-file_a8d3ad1f02ffca9503fa85aff518fc1d.dat new file mode 100644 index 0000000000000000000000000000000000000000..a816d3a8e72a468474b6ec1bffd9351d52faf0b6 GIT binary patch literal 46505 zcmeHQ`%l|g7T#asued@;p`$`cNLrdcwg}p8rCC70>}pj;m2sS4)v>d-1H&@>@B5u| z@3pTTC#1~{la^F7E!g*Y9^ZM~hmYDjFWYN_%fUh94*Oo1M)CQ9m$({LNzMz`5) zI#f>98aOG}YM@&;3ez|W0xy0xaC%<;>lOw?RZs>UCDAZ;J^KCm4pn>ocf4MG_RBA; z;ujHJhx3f$w@@;&sF@?0B(AFFmo>?Rs$}K6;@S zJApVJUZ9ZpRTdOiUYz(*D0V~?Q)_{fdhwPx^*pY;e{}qxPlq45{VmnuJ7<_)MzJ`F zF8omJ4F+D&cS7+REnfR!=N(4s(nz=5sQ;GQ)D?~b|H{Xxj-5FApLngyz4Jr#*>#ee zWXrvz8eGYZ1~;+ayG+X+HMZ-GP5jj=6)QH60!>}&+3ITO^u1)@xSlxL-#h;(DR{o0 zG3M3k>M)^~$LF7ZJNZ>o3zG3Fe|+NocjzUl@dVYoelLGOQk1YP8O?z}A7b==9mQV@ z9qRrH1^$tygS^3!SLbJ5e?UAs!E7RMdQ#aFuj9v_o91QJWO4$$53l?<3P~Z(jh}U^ zc|jW2`KLalH*ZZ&ATM+3#a9r5bM^20KU{B+Lbyg-(cR#YaRgl1Py}(pl`TM9*^7PMO@r+MlF6muoqLffn?9oOqI?@z8~eP#<|LbM4Pg{-3e<;e>Ov;9sg(JWyBy{C1dd08V=EB@kFCcY%qreDF1yQf(bv6Mi5SGu zmEVDDz*9>jaWV9R4v&hFR1Wvr4+4>RthLo7 zT@wgAhi4?f9sMME#zQ7gjQY!H{YHe|^~kI@^qiiG8rQ2m6>5yor%Y3vP6yfv^N^l; z?lAV#o3lvU&5f)Nsey{V+0(M@ONWhYkL1U9i9G~U>mZYu1QH%2yNyip=&Kiso_|FG z#u5u=P=B&d=0XPSDHS$fgu@{CQ^P*BN#0godyEAAS#T%*EPE?dze2#Izd8En>TMn4enD-Ho2m? zB;_~(#^ik2kmKOS?t~Y>kGzE}lGY3w>b5}yWya!3_QO=8ZAIT-nNS(V) zaL994M_f1*6TpTMujO+W6VB?DEVlwf*{kF|d~~s1tTTqKRI7q-+$%}(#=2@A)29aS z#fkz75M3*gfK1{_O*JhsLifXOsH>X5A3_iMg(^t+Sm&{6*oEMHqvit(dc=mBgn&Y8 zn{N|HT_d0MciD8|n?*OsZI!@}e*EC8Zgo&=fRiB)4RVHDU zk&KGWZNbkjg*zQ_aRY=zFzAKu2t90B@^`>1i+{s{5rbsm+4R@$JfY!iG|^ zED2z02_-T+Lu6#`e4|0lT2e+;Nlvwh7OX79GOG+T_4#)^xIpmqmF3i&>|~c|YWpBz zaO#Pc1*#fUrTnlfN72N6u>OI4Iw~o}De#kYV;!Ct5*-Z+GrgGbALfq?cO0dNkG&4? zUb`q{Ak5OoaWwGa)b|o<5Sa0;ehZ^d=DQFAWq$~YiY(*8Y}FX6vXc0L3zOxQNZ0Wb zBm!<|rbf}c#j@2q$jfg$kxgVoH5!opWN&1_D)LE)t$HKtWV9V=JbNPxYTI2XCw)Bf z-)VvwQiJw0IC|1`nA+1Taz@l-_1xiuI;lqzkW_hluHS(Q*CnJ7odnVlk?SLW(BY&9 z1q0d{li(t)HTf9QD>9!-5A9F#)^e9=L|v!z%F4=H^loUZrgy_iOkooHMOiqQYn`r6 zs)rQP=3D)MX0pNl9TRzloHalBLUWLhL&(Py<)p1-jv%#6gJ72~M+0)P;7;hqKi8;s z?RQ<8eq$Zit{b6jfgT%KT^`OIOl#_1iVZdHEaim|T4%r1*eF`g=WB+}n{NX@{E7e} z8m1m)7VCbIsBKX|v&HVh7y7Zr%CqvBiwniSbKxPznoww z*-#@1O1{uAVK1QgHE^gG;pZ=^P5BR(@V+4GxqzERhP{rE9^KNqfiL>!;LFje4q~s~Y!J zGo94Wl`|mosd~wpg*y!myIZ9tjJjOYAeG|0`(EH92uapn9kq8_6INpOX`O@b+K7*M9hIGSomXb+JMFbXE|9xK(esfEKE1&UoucD{s4WYsd?Y=@vW-dwauF={ z$RaY$M$ekuw9h_1pUM z_FCCdr&_eM#iJRiHL_kn#i^OH8sF1QRq=Ygz4ks&Vsi^<83W0e1dR9Q`T~!FSZFRN za06(w&;W-EBgJS2Wys~~U}B-VDm1br!2(uI~b!ZuPP&TqY#yi1pJbDJmgNkt4R#mquaW0?hWLjB(q`1O30UvazfA|p_W zv>jM+hzE5kiyg1)3jM%T)%*og1`Wa zcy9w1uFP6;Zvy!>26dT2@(nyu4A5^kchHr5lsdiHWn3zBdkt%%GYb{k@}U|~d5~ZC6M}pGTlh7EC8FH3 zIbf!m-Nr_Yzjx}cIJR3BOg+^nw;am*ByRqbjH}4~F ziY-3xY2|+nPTZ~3KL|nMAswU?A7a5XCT)>aqd19G4LEUpyx)F*aSCtYVmD^nKUwb79qMT$u#F`vD+|GMxQ%Lv8w}5<`f#Q#hoR~_%F`Iy# z#VKoUXayK0iX;@+xhU94R%wZyvqgFHz|OjKC`&uMSQjR*;GNcmPlz8DM>jd zAtfkZ*jO?pR06(rR!_xiKQdZkHq)Zz$gInvT(2U{qG4vMzQoL#Gh_3>%n^TcLN;XS zZ^j5Y9>U*bb(w^sh!V1uiVP2@@j2n5J9@w84~(Eq%wt*vHRfB!<Ay4m4X!&|FB+ zq!9^&y)r< zHfb~7PRbSilRGbDh+d4%i>j50De}oOErW%I`;w!uDssmIr$r#-Aczz9_&n9@B;gb< zLNvX__FnU|r@Af>#7GoNUah@~+x6X%OtG!xUXzG2?pPTm^v+NDJcKz&nG?%|w2-M* z@#e+NiQcML%2)dd(we^0$rIV7EVW8y7E^x(x-Oa_qje682@|!3CdJxj8WVJrjgCp! z5s}rwmLEfSZDyuvVN4pmY*C$)z6yySO2{+%FNGYdlf_f6_wB9Fi_a5zO zNAQ1gPV^yFp^`sKZJ3ibloAP#O%KMTxgJv9OB`5A`aC3^(qE+iEdO;r@Mb&n@rm;LYq^4?5IP1+k*${k5jPO(!6=fNgU@c)BxNesgw9M-xpR4Ci>Y~x0|f&Y{m;c@o2lW2wAz`#1`^$wtR)M#9VNI-G@; zU8tGNTH3Ub@B`_NAnfi``9MhASj}CWZF)tfEmdOymop6eSQRpln9xOIV!dJctd$I% z;V&NZUBGlT$INbB=77x_HJ643W&jzmZMjorT*7A^-LDxl#J92O4$Ih$3r{s(L ze-Oz<;(v19;}fo{>Uo8W(qvK{0)*&^Vzj`y@j%5XTh!jAg!qFieM!M2_;_g};VKKs^3<&%)%&@&Sz_ z2<<8Q#!n1A;^a=j%hfyRvu)EYV=K89PH;f2ijU&})O$`8oyWFm)2NqHJFVTt+B5wV zr*^XF`+-s%qc_wqQyl6u(+{&_M0z~mo8o|1Sn&3yNpR4`>65+(#<9{OCp{=il3x}f zc%{P*R2}5;PLqjy6>m}ueO}gzZNhaF#1FUW3VO@0J6*c@shvxGWMS% zb3ztYN@=!7{RP~aLVkWi1Ud;`s)Ew{A;|)pcOf`?-}9M9`c~L|pJ-$xniRcFy;;6) zoJg_~0&^BO_f~D;joro7vQifyGHyTL&96^f1P9!%2Rfg9v1&8hy&KQ6?@lhf;iqk3 zylrJJc3;t}1bbvwr-i+Yl2sT73D4de<6jW7RezC(cvetnnRu)IB%0E7*w?D;mMw68 zz>P-p%W@FN=6S9KAx%CY$-&X>X*-~ZJgYM9^TMS5fCE&udEp@k?tn;3XGOD2#PVQH zf<2Opmlk2=SRTxw6aaR5m>>PAIG7{t+YD)z%yyG)pC-*h@Lv2%_QLyD50O|gc2Qcp zg6YLe+ImzKVa;oL2Y;r&*W&Y;k=~HZEzhTToHag~*BCWOPZ&=B%Yr}>=;-w;uVtjVf z;xf^0i?%@(5NAe*CX425E)&r;C%kpu{IEI)N)NakgfS@cTQIguzp3KWrhtTb98R_` z)7dnE-p#uyY4;|ln8>?xY z3g#REgt5-M2uqst*i%>rp)v^;?8ZsEtGb!XwFn9HOulUzw`q@T(phAy{X(wT?;O2R z>ro!r)Y(dq1^JmVv0DQ^QO`^1^9NqskpCRV(ZGvS-{TL$J?2QRdh!1`0Bc%nKAyH! zw*5YCSg`ahr0Wj6)QkImh^(OB71y3{olszRmhk?-i_i%~a_Ph{`e}sA59ty_+{5mK zE*88nf=OA8sk6t8W`3itz0@IudAZIR!jGftkjy&~dH1SJ)EZue6UWZYauJh1erf$P zYaH2O2@=>lOuWun?D*;IU)ZchB-+?99U_qi7v+HTnNGFm8#h_Y<^E}79}?~*#B9d& z!d2w5*uZhW^8G=mfJTn?tG+N{luw5Jz7sWsLxS}9|}nPeh>{iPq~=f4Yt~Ig20P!1l^X(J1V#ySnz!qhR-Bqw9^+m z?pWR)#hF78A)}$K{N9W^f6O6`quyj@ODDwo#uiGQB*P0^^kVJ$E0X92Sok>19d{ip z)=}zsrjLmzu#mJ*tpbqBSwVBZda<>U%1AKVT(0u2CA>l*0sy*5HI7Kdw-A}LR*zuT zA?f-EETO#vPp#c&?+qBDui|M$5t~Bc$avhS(=F6|Su`h2;4cNf>xBS)F$_DN#IC(= z*NY<|;Vlqy(OCQ{3ko>ji64bxM?~=|fnK~NPCYE(0`>Nfj{o!N@S~u{w|EqiAoROo z<6qHaXr&JZ8aj%Sw6Ecm=P65itujk&ffZdW%3HV&e8K%SH60tN#i zq8Iex^}YrJu5rQcJ22cO6SCz-{kKHrIUtrwrXc+@F_&a*x{%|ez`yb#g7{ic^gr=h z&+?r@ndBzfaxdpKUxlP@G`NZV-eqb}WM;Hy;H@#JapKZ|XH*iG#&*52iN9KNm5_&- s9YCun9hg^ho|7YSfCkz!)>$TPMsk@$8Yc=UW0;INKm$7fKZ!H*f5Rj%MgRZ+ literal 0 HcmV?d00001 diff --git a/build/documentation/api/classes/OCA.Gallery.AppInfo.Application.html b/build/documentation/api/classes/OCA.Gallery.AppInfo.Application.html new file mode 100644 index 00000000..690f1af7 --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.AppInfo.Application.html @@ -0,0 +1,229 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\AppInfo\Application + + + + + + + + + + + + + + + + + + + + + +

+ +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Application

+ + Extends \OCP\AppFramework\App + +

Class Application

+
+
+ +
+ + + + + +
+ package + + +

OCA\Gallery\AppInfo

+
+ +

Methods

+ +
+

Constructor

+
__construct(array $urlParams = array()) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$urlParams

+ array

+
+ +
+
+ +
+ + +
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Controller.ConfigController.html b/build/documentation/api/classes/OCA.Gallery.Controller.ConfigController.html new file mode 100644 index 00000000..554f7c40 --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Controller.ConfigController.html @@ -0,0 +1,431 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Controller\ConfigController + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

ConfigController

+ + Extends \OCP\AppFramework\Controller + +

Class ConfigController

+
+
+ +
+ + + + + +
+ package + + +

OCA\Gallery\Controller

+
+ +

Methods

+ +
+

Constructor

+
__construct(string $appName, \OCP\IRequest $request, \OCA\Gallery\Service\ConfigService $configService, \OCA\Gallery\Service\PreviewService $previewService, \OCP\ILogger $logger) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$appName

+ string

+
+
+

$request

+ \OCP\IRequest

+
+
+

$configService

+ \OCA\Gallery\Service\ConfigService

+
+
+

$previewService

+ \OCA\Gallery\Service\PreviewService

+
+
+

$logger

+ \OCP\ILogger

+
+ +
+
+ +
+ +
+

error

+
error(\Exception $exception) : \OCP\AppFramework\Http\JSONResponse
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$exception

+ \Exception

the message that is returned taken from the exception

+
+ +

Response

+ \OCP\AppFramework\Http\JSONResponse

+
+
+ +
+ +
+

getConfig

+
getConfig(boolean $slideshow = false) : \OCA\Gallery\Controller\array<string,null|\OCA\Gallery\Controller\array>
+
+
+ + +
+
+
+ + + + + + +
+ NoAdminRequired + + +

Returns an app configuration array

+
+ +

Arguments

+
+

$slideshow

+ boolean

+
+ +

Response

+ \OCA\Gallery\Controller\array

+
+
+ +
+ +
+

Determines if the native SVG feature has been activated

+
isNativeSvgActivated(array $features) : boolean
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$features

+ array

+
+ +

Response

+ boolean

+
+
+ +
+ + +

Properties

+ +
+

configService

+
configService : \OCA\Gallery\Service\ConfigService
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Service\ConfigService +
+
+
+ +
+

previewService

+
previewService : \OCA\Gallery\Service\PreviewService
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Service\PreviewService +
+
+
+ +
+

logger

+
logger : \OCP\ILogger
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\ILogger +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Controller.FilesController.html b/build/documentation/api/classes/OCA.Gallery.Controller.FilesController.html new file mode 100644 index 00000000..f72641b7 --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Controller.FilesController.html @@ -0,0 +1,567 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Controller\FilesController + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

FilesController

+ + Extends \OCP\AppFramework\Controller + +

Class FilesController

+
+
+ +
+ + + + + +
+ package + + +

OCA\Gallery\Controller

+
+ +

Methods

+ +
+

Constructor

+
__construct(string $appName, \OCP\IRequest $request, \OCA\Gallery\Service\SearchFolderService $searchFolderService, \OCA\Gallery\Service\ConfigService $configService, \OCA\Gallery\Service\SearchMediaService $searchMediaService, \OCP\ILogger $logger) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$appName

+ string

+
+
+

$request

+ \OCP\IRequest

+
+
+

$searchFolderService

+ \OCA\Gallery\Service\SearchFolderService

+
+
+

$configService

+ \OCA\Gallery\Service\ConfigService

+
+
+

$searchMediaService

+ \OCA\Gallery\Service\SearchMediaService

+
+
+

$logger

+ \OCP\ILogger

+
+ +
+
+ +
+ +
+

error

+
error(\Exception $exception) : \OCP\AppFramework\Http\JSONResponse
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$exception

+ \Exception

the message that is returned taken from the exception

+
+ +

Response

+ \OCP\AppFramework\Http\JSONResponse

+
+
+ +
+ +
+

Generates shortened paths to the media files

+
fixPaths( $files,  $folderPathFromRoot) : array
+
+
+ + +
+
+

We only want to keep one folder between the current folder and the found media file +/root/folder/sub1/sub2/file.ext +becomes +/root/folder/file.ext

+ + +
+ +

Arguments

+
+

$files

+

+
+
+

$folderPathFromRoot

+

+
+ +

Response

+ array

+
+
+ +
+ +
+

Simply builds and returns an array containing the list of files, the album information and +whether the location has changed or not

+
formatResults( $files, array $albumInfo, boolean $locationHasChanged) : array
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$files

+

+
+
+

$albumInfo

+ array

+
+
+

$locationHasChanged

+ boolean

+
+ +

Response

+ array

+
+
+ +
+ +
+

getFiles

+
getFiles(string $location, string $features, string $etag) : array
+
+
+ + +
+
+
+ + + + + + +
+ NoAdminRequired + + +

Returns a list of all media files available to the authenticated user

+
    +
  • Authentication can be via a login/password or a token/(password)
  • +
  • For private galleries, it returns all media files, with the full path from the root +folder For public galleries, the path starts from the folder the link gives access to +(virtual root)
  • +
  • An exception is only caught in case something really wrong happens. As we don't test +files before including them in the list, we may return some bad apples
  • +
+
+ +

Arguments

+
+

$location

+ string

a path representing the current album in the app

+
+
+

$features

+ string

the list of supported features

+
+
+

$etag

+ string

the last known etag in the client

+
+ +

Response

+ array

<string,array<string,string|int>>|Http\JSONResponse

+
+
+ +
+ +
+

Returns a shortened path for the gallery view

+
getReducedPath(string $path, string $currFolderPath) : string
+
+ inherited
+ + +
+
+

We only want to keep one folder between the current folder and the found media file +/root/folder/sub1/sub2/file.ext +becomes +/root/folder/file.ext

+ + +
+ +

Arguments

+
+

$path

+ string

the full path to a file, which never starts with a slash

+
+
+

$currFolderPath

+ string

the current folder, which never starts with a slash

+
+ +

Response

+ string

+
+
+ +
+ + +

Properties

+ +
+

searchFolderService

+
searchFolderService : \OCA\Gallery\Service\SearchFolderService
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Service\SearchFolderService +
+
+
+ +
+

configService

+
configService : \OCA\Gallery\Service\ConfigService
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Service\ConfigService +
+
+
+ +
+

searchMediaService

+
searchMediaService : \OCA\Gallery\Service\SearchMediaService
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Service\SearchMediaService +
+
+
+ +
+

logger

+
logger : \OCP\ILogger
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\ILogger +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Controller.JsonHttpError.html b/build/documentation/api/classes/OCA.Gallery.Controller.JsonHttpError.html new file mode 100644 index 00000000..31584693 --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Controller.JsonHttpError.html @@ -0,0 +1,224 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Controller\JsonHttpError + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

JsonHttpError

+ + +

Our classes extend both Controller and ApiController, so we need to use +traits to add some common methods

+
+
+ +
+ + + + + +
+ package + + +

OCA\Gallery\Controller

+
+ +

Methods

+ +
+

error

+
error(\Exception $exception) : \OCP\AppFramework\Http\JSONResponse
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$exception

+ \Exception

the message that is returned taken from the exception

+
+ +

Response

+ \OCP\AppFramework\Http\JSONResponse

+
+
+ +
+ + +
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Controller.PageController.html b/build/documentation/api/classes/OCA.Gallery.Controller.PageController.html new file mode 100644 index 00000000..630e354c --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Controller.PageController.html @@ -0,0 +1,736 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Controller\PageController + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

PageController

+ + Extends \OCP\AppFramework\Controller + +

Generates templates for the landing page from within ownCloud, the public +gallery and error pages

+
+
+ +
+ + + + + +
+ package + + +

OCA\Gallery\Controller

+
+ +

Methods

+ +
+

Constructor

+
__construct(string $appName, \OCP\IRequest $request, \OCA\Gallery\Environment\Environment $environment, \OCP\IURLGenerator $urlGenerator, \OCA\Gallery\Service\DownloadService $downloadService, \OCP\IConfig $appConfig) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$appName

+ string

+
+
+

$request

+ \OCP\IRequest

+
+ +
+

$urlGenerator

+ \OCP\IURLGenerator

+
+
+

$downloadService

+ \OCA\Gallery\Service\DownloadService

+
+
+

$appConfig

+ \OCP\IConfig

+
+ +
+
+ +
+ +
+

Adds the domain "data:" to the allowed image domains +this function is called by reference

+
addContentSecurityToResponse(\OCP\AppFramework\Http\TemplateResponse $response) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$response

+ \OCP\AppFramework\Http\TemplateResponse

+
+ +
+
+ +
+ +
+

Downloads the file associated with a token

+
downloadFile(\OCP\Files\File $file, string|null $filename) : \OCA\Gallery\Http\ImageResponse|\OCP\AppFramework\Http\RedirectResponse
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$file

+ \OCP\Files\File

+
+
+

$filename

+ string|null

+
+ +

Response

+ \OCA\Gallery\Http\ImageResponse|\OCP\AppFramework\Http\RedirectResponse

+
+
+ +
+ +
+

errorPage

+
errorPage(string $message, integer $code) : \OCP\AppFramework\Http\TemplateResponse
+
+
+ + +
+
+
+ + + + + + + + + + + + + + +
+ PublicPage + + + +
+ NoCSRFRequired + + + +
+ Guest + + +

Generates an error page based on the error code

+
+ +

Arguments

+
+

$message

+ string

+
+
+

$code

+ integer

+
+ +

Response

+ \OCP\AppFramework\Http\TemplateResponse

+
+
+ +
+ +
+

Determines if we can add external shared to this instance

+
getServer2ServerProperties() : array
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

+
+
+ +
+ +
+

index

+
index() : \OCP\AppFramework\Http\TemplateResponse
+
+
+ + +
+
+
+ + + + + + + + + + + + + + +
+ NoAdminRequired + + + +
+ NoCSRFRequired + + +

Shows the albums and pictures at the root folder or a message if +there are no pictures.

+

This is the entry page for logged-in users accessing the app from +within ownCloud. +A TemplateResponse response uses a template from the templates folder +and parameters provided here to build the page users will see

+
+ + +
+ + +

Response

+ \OCP\AppFramework\Http\TemplateResponse

+
+
+ +
+ +
+

publicIndex

+
publicIndex(string $token, null|string $filename) : \OCP\AppFramework\Http\TemplateResponse|\OCA\Gallery\Http\ImageResponse|\OCP\AppFramework\Http\RedirectResponse
+
+
+ + +
+
+
+ + + + + + + + + + +
+ PublicPage + + + +
+ NoCSRFRequired + + +

Shows the albums and pictures or download the single file the token gives access to

+
+ +

Arguments

+
+

$token

+ string

+
+
+

$filename

+ null|string

+
+ +

Response

+ \OCP\AppFramework\Http\TemplateResponse|\OCA\Gallery\Http\ImageResponse|\OCP\AppFramework\Http\RedirectResponse

+
+
+ +
+ +
+

Shows the albums and pictures the token gives access to

+
showPublicPage( $token) : \OCP\AppFramework\Http\TemplateResponse
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$token

+

+
+ +

Response

+ \OCP\AppFramework\Http\TemplateResponse

+
+
+ +
+ +
+

slideshow

+
slideshow() : \OCP\AppFramework\Http\TemplateResponse
+
+
+ + +
+
+
+ + + + + + + + + + + + + + + + + + +
+ PublicPage + + + +
+ NoCSRFRequired + + + +
+ Guest + + +

Returns the slideshow template

+
+ + +
+ + +

Response

+ \OCP\AppFramework\Http\TemplateResponse

+
+
+ +
+ + +

Properties

+ +
+

environment

+
environment : \OCA\Gallery\Environment\Environment
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Environment\Environment +
+
+
+ +
+

urlGenerator

+
urlGenerator : \OCP\IURLGenerator
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\IURLGenerator +
+
+
+ +
+

downloadService

+
downloadService : \OCA\Gallery\Service\DownloadService
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Service\DownloadService +
+
+
+ +
+

appConfig

+
appConfig : \OCP\IConfig
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\IConfig +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Controller.PathManipulation.html b/build/documentation/api/classes/OCA.Gallery.Controller.PathManipulation.html new file mode 100644 index 00000000..24caad53 --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Controller.PathManipulation.html @@ -0,0 +1,230 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Controller\PathManipulation + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

PathManipulation

+ + +

+
+
+ +
+ + + + + +
+ package + + +

OCA\Gallery\Controller

+
+ +

Methods

+ +
+

Returns a shortened path for the gallery view

+
getReducedPath(string $path, string $currFolderPath) : string
+
+
+ + +
+
+

We only want to keep one folder between the current folder and the found media file +/root/folder/sub1/sub2/file.ext +becomes +/root/folder/file.ext

+ + +
+ +

Arguments

+
+

$path

+ string

the full path to a file, which never starts with a slash

+
+
+

$currFolderPath

+ string

the current folder, which never starts with a slash

+
+ +

Response

+ string

+
+
+ +
+ + +
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Controller.PreviewController.html b/build/documentation/api/classes/OCA.Gallery.Controller.PreviewController.html new file mode 100644 index 00000000..4f2c0d9c --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Controller.PreviewController.html @@ -0,0 +1,877 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Controller\PreviewController + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

PreviewController

+ + Extends \OCP\AppFramework\Controller + +

Class PreviewController

+
+
+ +
+ + + + + +
+ package + + +

OCA\Gallery\Controller

+
+ +

Methods

+ +
+

Constructor

+
__construct(string $appName, \OCP\IRequest $request, \OCP\IURLGenerator $urlGenerator, \OCA\Gallery\Service\ThumbnailService $thumbnailService, \OCA\Gallery\Service\PreviewService $previewService, \OCA\Gallery\Service\DownloadService $downloadService, \OCP\IEventSource $eventSource, \OCP\ILogger $logger) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$appName

+ string

+
+
+

$request

+ \OCP\IRequest

+
+
+

$urlGenerator

+ \OCP\IURLGenerator

+
+
+

$thumbnailService

+ \OCA\Gallery\Service\ThumbnailService

+
+
+

$previewService

+ \OCA\Gallery\Service\PreviewService

+
+
+

$downloadService

+ \OCA\Gallery\Service\DownloadService

+
+
+

$eventSource

+ \OCP\IEventSource

+
+
+

$logger

+ \OCP\ILogger

+
+ +
+
+ +
+ +
+

error

+
error(\Exception $exception) : \OCP\AppFramework\Http\JSONResponse
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$exception

+ \Exception

the message that is returned taken from the exception

+
+ +

Response

+ \OCP\AppFramework\Http\JSONResponse

+
+
+ +
+ +
+

Returns either a generated preview, the file as-is or an empty object

+
getData(integer $fileId, integer $width, integer $height, boolean $keepAspect = true, boolean $animatedPreview = true, boolean $base64Encode = false) : \OCA\Gallery\Controller\array<string,\OC_Image|\OCA\Gallery\Controller\string>
+
+
+ + +
+
+
+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$fileId

+ integer

+
+
+

$width

+ integer

+
+
+

$height

+ integer

+
+
+

$keepAspect

+ boolean

+
+
+

$animatedPreview

+ boolean

+
+
+

$base64Encode

+ boolean

+
+ +

Response

+ \OCA\Gallery\Controller\array

+
+
+ +
+ +
+

Returns an error array

+
getErrorData( $status) : \OCA\Gallery\Controller\array<null|integer|\OCA\Gallery\Controller\string>
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$status

+

+
+ +

Response

+ \OCA\Gallery\Controller\array

+
+
+ +
+ +
+

Returns an URL based on the HTTP status code

+
getErrorUrl( $status) : string
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$status

+

+
+ +

Response

+ string

+
+
+ +
+ +
+

Returns an error array

+
getExceptionData( $exception) : \OCA\Gallery\Controller\array<null|integer|\OCA\Gallery\Controller\string>
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$exception

+

+
+ +

Response

+ \OCA\Gallery\Controller\array

+
+
+ +
+ +
+

getPreview

+
getPreview(integer $fileId, integer $width, integer $height, string|null $download) : \OCA\Gallery\Http\ImageResponse|\OCP\AppFramework\Http\RedirectResponse|\OCP\AppFramework\Http\JSONResponse
+
+
+ + +
+
+
+ + + + + + +
+ NoAdminRequired + + +

Sends either a large preview of the requested file or the +original file itself

+
+ +

Arguments

+
+

$fileId

+ integer

the ID of the file of which we need a large preview of

+
+
+

$width

+ integer

+
+
+

$height

+ integer

+
+
+

$download

+ string|null

+
+ +

Response

+ \OCA\Gallery\Http\ImageResponse|\OCP\AppFramework\Http\RedirectResponse|\OCP\AppFramework\Http\JSONResponse

+
+
+ +
+ +
+

getPreviewData

+
getPreviewData( $file,  $previewRequired,  $width,  $height,  $keepAspect,  $base64Encode) : array
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$file

+

+
+
+

$previewRequired

+

+
+
+

$width

+

+
+
+

$height

+

+
+
+

$keepAspect

+

+
+
+

$base64Encode

+

+
+ +

Response

+ array

+
+
+ +
+ +
+

Retrieves the thumbnail to send back to the browser

+
getThumbnail(integer $fileId, boolean $square, double $scale) : \OCA\Gallery\Controller\array<string,array|\OCA\Gallery\Controller\string>
+
+
+ + +
+
+

The thumbnail is either a resized preview of the file or the original file +Thumbnails are base64encoded before getting sent back

+ + +
+ +

Arguments

+
+

$fileId

+ integer

the ID of the file of which we need a thumbnail preview of

+
+
+

$square

+ boolean

whether the thumbnail should be square

+
+
+

$scale

+ double

whether we're allowed to scale the preview up

+
+ +

Response

+ \OCA\Gallery\Controller\array

+
+
+ +
+ +
+

getThumbnails

+
getThumbnails(string $ids, boolean $square, double $scale) : \OCA\Gallery\Controller\array<string,array|string|\OCA\Gallery\Controller\null>
+
+
+ + +
+
+
+ + + + + + +
+ NoAdminRequired + + +

Generates thumbnails

+

Uses EventSource to send thumbnails back as soon as they're created

+

FIXME: @LukasReschke says: The exit is required here because +otherwise the AppFramework is trying to add headers as well after +dispatching the request which results in a "Cannot modify header +information" notice.

+

WARNING: Returning a JSON response does not get rid of the problem

+
+ +

Arguments

+
+

$ids

+ string

the ID of the files of which we need thumbnail previews of

+
+
+

$square

+ boolean

+
+
+

$scale

+ double

+
+ +

Response

+ \OCA\Gallery\Controller\array

+
+
+ +
+ +
+

Returns true if we need to generate a preview for that file

+
isPreviewRequired( $file, boolean $animatedPreview) : boolean
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$file

+

+
+
+

$animatedPreview

+ boolean

+
+ +

Response

+ boolean

+
+
+ +
+ + +

Properties

+ +
+

urlGenerator

+
urlGenerator : \OCP\IURLGenerator
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\IURLGenerator +
+
+
+ +
+

thumbnailService

+
thumbnailService : \OCA\Gallery\Service\ThumbnailService
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Service\ThumbnailService +
+
+
+ +
+

previewService

+
previewService : \OCA\Gallery\Service\PreviewService
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Service\PreviewService +
+
+
+ +
+

downloadService

+
downloadService : \OCA\Gallery\Service\DownloadService
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Service\DownloadService +
+
+
+ +
+

eventSource

+
eventSource : \OCP\IEventSource
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\IEventSource +
+
+
+ +
+

logger

+
logger : \OCP\ILogger
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\ILogger +
+
+
+ +
+

download

+
download : 
+
+
+
+
+
+ + + + + + + + + + +
+ type + +

bool

+
+ + +
+ +

Type(s)

+ +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Controller.PublicConfigController.html b/build/documentation/api/classes/OCA.Gallery.Controller.PublicConfigController.html new file mode 100644 index 00000000..c698a850 --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Controller.PublicConfigController.html @@ -0,0 +1,432 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Controller\PublicConfigController + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

PublicConfigController

+ + Extends \OCA\Gallery\Controller\ConfigController + +

Class PublicConfigController

+
+
+

Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited

+
+ + + + + +
+ package + + +

OCA\Gallery\Controller

+
+ +

Methods

+ +
+

Constructor

+
__construct(string $appName, \OCP\IRequest $request, \OCA\Gallery\Service\ConfigService $configService, \OCA\Gallery\Service\PreviewService $previewService, \OCP\ILogger $logger) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$appName

+ string

+
+
+

$request

+ \OCP\IRequest

+
+
+

$configService

+ \OCA\Gallery\Service\ConfigService

+
+
+

$previewService

+ \OCA\Gallery\Service\PreviewService

+
+
+

$logger

+ \OCP\ILogger

+
+ +
+
+ +
+ +
+

error

+
error(\Exception $exception) : \OCP\AppFramework\Http\JSONResponse
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$exception

+ \Exception

the message that is returned taken from the exception

+
+ +

Response

+ \OCP\AppFramework\Http\JSONResponse

+
+
+ +
+ +
+

getConfig

+
getConfig(boolean $slideshow = false) : \OCA\Gallery\Controller\array<string,null|\OCA\Gallery\Controller\array>
+
+ inherited
+ + +
+
+
+ + + + + + +
+ NoAdminRequired + + +

Returns an app configuration array

+
+ +

Arguments

+
+

$slideshow

+ boolean

+
+ +

Response

+ \OCA\Gallery\Controller\array

+
+
+ +
+ +
+

Determines if the native SVG feature has been activated

+
isNativeSvgActivated(array $features) : boolean
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$features

+ array

+
+ +

Response

+ boolean

+
+
+ +
+ + +

Properties

+ +
+

configService

+
configService : \OCA\Gallery\Service\ConfigService
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Service\ConfigService +
+
+
+ +
+

previewService

+
previewService : \OCA\Gallery\Service\PreviewService
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Service\PreviewService +
+
+
+ +
+

logger

+
logger : \OCP\ILogger
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\ILogger +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Controller.PublicFilesController.html b/build/documentation/api/classes/OCA.Gallery.Controller.PublicFilesController.html new file mode 100644 index 00000000..d42ac1fb --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Controller.PublicFilesController.html @@ -0,0 +1,568 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Controller\PublicFilesController + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

PublicFilesController

+ + Extends \OCA\Gallery\Controller\FilesController + +

Class PublicFilesController

+
+
+

Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited

+
+ + + + + +
+ package + + +

OCA\Gallery\Controller

+
+ +

Methods

+ +
+

Constructor

+
__construct(string $appName, \OCP\IRequest $request, \OCA\Gallery\Service\SearchFolderService $searchFolderService, \OCA\Gallery\Service\ConfigService $configService, \OCA\Gallery\Service\SearchMediaService $searchMediaService, \OCP\ILogger $logger) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$appName

+ string

+
+
+

$request

+ \OCP\IRequest

+
+
+

$searchFolderService

+ \OCA\Gallery\Service\SearchFolderService

+
+
+

$configService

+ \OCA\Gallery\Service\ConfigService

+
+
+

$searchMediaService

+ \OCA\Gallery\Service\SearchMediaService

+
+
+

$logger

+ \OCP\ILogger

+
+ +
+
+ +
+ +
+

error

+
error(\Exception $exception) : \OCP\AppFramework\Http\JSONResponse
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$exception

+ \Exception

the message that is returned taken from the exception

+
+ +

Response

+ \OCP\AppFramework\Http\JSONResponse

+
+
+ +
+ +
+

Generates shortened paths to the media files

+
fixPaths( $files,  $folderPathFromRoot) : array
+
+ inherited
+ + +
+
+

We only want to keep one folder between the current folder and the found media file +/root/folder/sub1/sub2/file.ext +becomes +/root/folder/file.ext

+ + +
+ +

Arguments

+
+

$files

+

+
+
+

$folderPathFromRoot

+

+
+ +

Response

+ array

+
+
+ +
+ +
+

Simply builds and returns an array containing the list of files, the album information and +whether the location has changed or not

+
formatResults( $files, array $albumInfo, boolean $locationHasChanged) : array
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$files

+

+
+
+

$albumInfo

+ array

+
+
+

$locationHasChanged

+ boolean

+
+ +

Response

+ array

+
+
+ +
+ +
+

getFiles

+
getFiles(string $location, string $features, string $etag) : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ NoAdminRequired + + +

Returns a list of all media files available to the authenticated user

+
    +
  • Authentication can be via a login/password or a token/(password)
  • +
  • For private galleries, it returns all media files, with the full path from the root +folder For public galleries, the path starts from the folder the link gives access to +(virtual root)
  • +
  • An exception is only caught in case something really wrong happens. As we don't test +files before including them in the list, we may return some bad apples
  • +
+
+ +

Arguments

+
+

$location

+ string

a path representing the current album in the app

+
+
+

$features

+ string

the list of supported features

+
+
+

$etag

+ string

the last known etag in the client

+
+ +

Response

+ array

<string,array<string,string|int>>|Http\JSONResponse

+
+
+ +
+ +
+

Returns a shortened path for the gallery view

+
getReducedPath(string $path, string $currFolderPath) : string
+
+ inherited
+ + +
+
+

We only want to keep one folder between the current folder and the found media file +/root/folder/sub1/sub2/file.ext +becomes +/root/folder/file.ext

+ + +
+ +

Arguments

+
+

$path

+ string

the full path to a file, which never starts with a slash

+
+
+

$currFolderPath

+ string

the current folder, which never starts with a slash

+
+ +

Response

+ string

+
+
+ +
+ + +

Properties

+ +
+

searchFolderService

+
searchFolderService : \OCA\Gallery\Service\SearchFolderService
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Service\SearchFolderService +
+
+
+ +
+

configService

+
configService : \OCA\Gallery\Service\ConfigService
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Service\ConfigService +
+
+
+ +
+

searchMediaService

+
searchMediaService : \OCA\Gallery\Service\SearchMediaService
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Service\SearchMediaService +
+
+
+ +
+

logger

+
logger : \OCP\ILogger
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\ILogger +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Controller.PublicPreviewController.html b/build/documentation/api/classes/OCA.Gallery.Controller.PublicPreviewController.html new file mode 100644 index 00000000..b9b799d8 --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Controller.PublicPreviewController.html @@ -0,0 +1,878 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Controller\PublicPreviewController + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

PublicPreviewController

+ + Extends \OCA\Gallery\Controller\PreviewController + +

Class PublicPreviewController

+
+
+

Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited

+
+ + + + + +
+ package + + +

OCA\Gallery\Controller

+
+ +

Methods

+ +
+

Constructor

+
__construct(string $appName, \OCP\IRequest $request, \OCP\IURLGenerator $urlGenerator, \OCA\Gallery\Service\ThumbnailService $thumbnailService, \OCA\Gallery\Service\PreviewService $previewService, \OCA\Gallery\Service\DownloadService $downloadService, \OCP\IEventSource $eventSource, \OCP\ILogger $logger) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$appName

+ string

+
+
+

$request

+ \OCP\IRequest

+
+
+

$urlGenerator

+ \OCP\IURLGenerator

+
+
+

$thumbnailService

+ \OCA\Gallery\Service\ThumbnailService

+
+
+

$previewService

+ \OCA\Gallery\Service\PreviewService

+
+
+

$downloadService

+ \OCA\Gallery\Service\DownloadService

+
+
+

$eventSource

+ \OCP\IEventSource

+
+
+

$logger

+ \OCP\ILogger

+
+ +
+
+ +
+ +
+

error

+
error(\Exception $exception) : \OCP\AppFramework\Http\JSONResponse
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$exception

+ \Exception

the message that is returned taken from the exception

+
+ +

Response

+ \OCP\AppFramework\Http\JSONResponse

+
+
+ +
+ +
+

Returns either a generated preview, the file as-is or an empty object

+
getData(integer $fileId, integer $width, integer $height, boolean $keepAspect = true, boolean $animatedPreview = true, boolean $base64Encode = false) : \OCA\Gallery\Controller\array<string,\OC_Image|\OCA\Gallery\Controller\string>
+
+ inherited
+ + +
+
+
+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$fileId

+ integer

+
+
+

$width

+ integer

+
+
+

$height

+ integer

+
+
+

$keepAspect

+ boolean

+
+
+

$animatedPreview

+ boolean

+
+
+

$base64Encode

+ boolean

+
+ +

Response

+ \OCA\Gallery\Controller\array

+
+
+ +
+ +
+

Returns an error array

+
getErrorData( $status) : \OCA\Gallery\Controller\array<null|integer|\OCA\Gallery\Controller\string>
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$status

+

+
+ +

Response

+ \OCA\Gallery\Controller\array

+
+
+ +
+ +
+

Returns an URL based on the HTTP status code

+
getErrorUrl( $status) : string
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$status

+

+
+ +

Response

+ string

+
+
+ +
+ +
+

Returns an error array

+
getExceptionData( $exception) : \OCA\Gallery\Controller\array<null|integer|\OCA\Gallery\Controller\string>
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$exception

+

+
+ +

Response

+ \OCA\Gallery\Controller\array

+
+
+ +
+ +
+

getPreview

+
getPreview(integer $fileId, integer $width, integer $height, string|null $download) : \OCA\Gallery\Http\ImageResponse|\OCP\AppFramework\Http\RedirectResponse|\OCP\AppFramework\Http\JSONResponse
+
+ inherited
+ + +
+
+
+ + + + + + +
+ NoAdminRequired + + +

Sends either a large preview of the requested file or the +original file itself

+
+ +

Arguments

+
+

$fileId

+ integer

the ID of the file of which we need a large preview of

+
+
+

$width

+ integer

+
+
+

$height

+ integer

+
+
+

$download

+ string|null

+
+ +

Response

+ \OCA\Gallery\Http\ImageResponse|\OCP\AppFramework\Http\RedirectResponse|\OCP\AppFramework\Http\JSONResponse

+
+
+ +
+ +
+

getPreviewData

+
getPreviewData( $file,  $previewRequired,  $width,  $height,  $keepAspect,  $base64Encode) : array
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$file

+

+
+
+

$previewRequired

+

+
+
+

$width

+

+
+
+

$height

+

+
+
+

$keepAspect

+

+
+
+

$base64Encode

+

+
+ +

Response

+ array

+
+
+ +
+ +
+

Retrieves the thumbnail to send back to the browser

+
getThumbnail(integer $fileId, boolean $square, double $scale) : \OCA\Gallery\Controller\array<string,array|\OCA\Gallery\Controller\string>
+
+ inherited
+ + +
+
+

The thumbnail is either a resized preview of the file or the original file +Thumbnails are base64encoded before getting sent back

+ + +
+ +

Arguments

+
+

$fileId

+ integer

the ID of the file of which we need a thumbnail preview of

+
+
+

$square

+ boolean

whether the thumbnail should be square

+
+
+

$scale

+ double

whether we're allowed to scale the preview up

+
+ +

Response

+ \OCA\Gallery\Controller\array

+
+
+ +
+ +
+

getThumbnails

+
getThumbnails(string $ids, boolean $square, double $scale) : \OCA\Gallery\Controller\array<string,array|string|\OCA\Gallery\Controller\null>
+
+ inherited
+ + +
+
+
+ + + + + + +
+ NoAdminRequired + + +

Generates thumbnails

+

Uses EventSource to send thumbnails back as soon as they're created

+

FIXME: @LukasReschke says: The exit is required here because +otherwise the AppFramework is trying to add headers as well after +dispatching the request which results in a "Cannot modify header +information" notice.

+

WARNING: Returning a JSON response does not get rid of the problem

+
+ +

Arguments

+
+

$ids

+ string

the ID of the files of which we need thumbnail previews of

+
+
+

$square

+ boolean

+
+
+

$scale

+ double

+
+ +

Response

+ \OCA\Gallery\Controller\array

+
+
+ +
+ +
+

Returns true if we need to generate a preview for that file

+
isPreviewRequired( $file, boolean $animatedPreview) : boolean
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$file

+

+
+
+

$animatedPreview

+ boolean

+
+ +

Response

+ boolean

+
+
+ +
+ + +

Properties

+ +
+

urlGenerator

+
urlGenerator : \OCP\IURLGenerator
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\IURLGenerator +
+
+
+ +
+

thumbnailService

+
thumbnailService : \OCA\Gallery\Service\ThumbnailService
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Service\ThumbnailService +
+
+
+ +
+

previewService

+
previewService : \OCA\Gallery\Service\PreviewService
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Service\PreviewService +
+
+
+ +
+

downloadService

+
downloadService : \OCA\Gallery\Service\DownloadService
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Service\DownloadService +
+
+
+ +
+

eventSource

+
eventSource : \OCP\IEventSource
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\IEventSource +
+
+
+ +
+

logger

+
logger : \OCP\ILogger
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\ILogger +
+
+
+ +
+

download

+
download : 
+
+ inherited
+
+
+
+ + + + + + + + + + +
+ type + +

bool

+
+ + +
+ +

Type(s)

+ +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Environment.Environment.html b/build/documentation/api/classes/OCA.Gallery.Environment.Environment.html new file mode 100644 index 00000000..922f1af6 --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Environment.Environment.html @@ -0,0 +1,1140 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Environment\Environment + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Environment

+ + +

Builds the environment so that the services have access to the files and folders' owner

+
+
+ +
+ + + + + + + + + +
+ todo + + +

remove the serverContainer once OCP\IUserManager has a getUserFolder() method

+
+ package + + +

OCA\Gallery\Environment

+
+ +

Methods

+ +
+

__construct

+
__construct( $appName,  $userId,  $userFolder, \OCP\IUserManager $userManager, \OCP\IServerContainer $serverContainer, \OCP\ILogger $logger) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$appName

+

+
+
+

$userId

+

+
+
+

$userFolder

+

+
+
+

$userManager

+ \OCP\IUserManager

+
+
+

$serverContainer

+ \OCP\IServerContainer

+
+
+

$logger

+ \OCP\ILogger

+
+ +
+
+ +
+ +
+

Returns the path from the shared folder to the root folder in the original +owner's filesystem: /userId/files/parent_folder/shared_folder

+
buildFromRootToFolder(string $fileSource) : string
+
+
+ + +
+
+

This cannot be calculated with paths and IDs, the linkitem's file source is required

+ + +
+ +

Arguments

+
+

$fileSource

+ string

+
+ +

Response

+ string

+
+
+ +
+ +
+

Returns the name of the user sharing files publicly

+
getDisplayName() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

+
+
+ +
+ +
+

Returns the Node based on a path starting from the files' owner user folder

+
getNodeFromUserFolder(string $path) : \OCP\Files\File|\OCP\Files\Folder
+
+
+ + +
+
+

When logged in, this is the current user's user folder +When visiting a link, this is the sharer's user folder

+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$path

+ string

+
+ +

Response

+ \OCP\Files\File|\OCP\Files\Folder

+
+
+ +
+ +
+

Returns the Node based on a path starting from the virtual root

+
getNodeFromVirtualRoot(string $subPath) : \OCP\Files\File|\OCP\Files\Folder
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$subPath

+ string

+
+ +

Response

+ \OCP\Files\File|\OCP\Files\Folder

+
+
+ +
+ +
+

Returns the path which goes from the file, up to the user folder, based on a node: +parent_folder/current_folder/my_file

+
getPathFromUserFolder(\OCP\Files\Node $file) : string
+
+
+ + +
+
+

This is used for the preview system, which needs a full path

+

getPath() on the file produces a path like: +'/userId/files/my_folder/my_sub_folder/my_file'

+

So we substract the path to the folder, giving us a relative path +'my_folder/my_sub_folder/my_file'

+ + +
+ +

Arguments

+
+

$file

+ \OCP\Files\Node

+
+ +

Response

+ string

+
+
+ +
+ +
+

Returns the path which goes from the file, up to the root folder of the Gallery: +current_folder/my_file

+
getPathFromVirtualRoot(\OCP\Files\File|\OCP\Files\Folder $node) : string
+
+
+ + +
+
+

That root folder changes when folders are shared publicly

+ + +
+ +

Arguments

+
+

$node

+ \OCP\Files\File|\OCP\Files\Folder

+
+ +

Response

+ string

+
+
+ +
+ +
+

Returns the path which goes from the file, up to the user folder, based on a path: +parent_folder/current_folder/my_file

+
getRelativePath(string $fullPath) : string
+
+
+ + +
+
+

getPath() on the file produces a path like: +'/userId/files/my_folder/my_sub_folder/my_file'

+

So we substract the path to the user folder, giving us a relative path +'my_folder/my_sub_folder'

+ + +
+ +

Arguments

+
+

$fullPath

+ string

+
+ +

Response

+ string

+
+
+ +
+ +
+

Returns the resource identified by the given ID

+
getResourceFromId(integer $resourceId) : \OCP\Files\Node
+
+
+ + +
+
+
+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$resourceId

+ integer

+
+ +

Response

+ \OCP\Files\Node

+
+
+ +
+ +
+

Returns the name of shared folder

+
getSharedFolderName() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

+
+
+ +
+ +
+

Returns the shared node

+
getSharedNode() : \OCP\Files\File|\OCP\Files\Folder
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ \OCP\Files\File|\OCP\Files\Folder

+
+
+ +
+ +
+

Returns the password for the share, if there is one

+
getSharePassword() : string|null
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string|null

+
+
+ +
+ +
+

Returns the userId of the currently logged-in user or the sharer

+
getUserId() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

+
+
+ +
+ +
+

Returns the virtual root where the user lands after logging in or when following a link

+
getVirtualRootFolder() : \OCP\Files\Folder
+
+
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ + +

Response

+ \OCP\Files\Folder

+
+
+ +
+ +
+

Logs the error and raises an exception

+
logAndThrowNotFound(string $message) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$message

+ string

+
+ +
+
+ +
+ +
+

Creates the environment for a logged-in user

+
setStandardEnv() 
+
+
+ + +
+
+

userId and userFolder are already known, we define fromRootToFolder +so that the services can use one method to have access to resources +without having to know whether they're private or public

+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Creates the environment based on the linkItem the token links to

+
setTokenBasedEnv(array $linkItem) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$linkItem

+ array

+
+ +
+
+ +
+ + +

Properties

+ +
+

appName

+
appName : string
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ string +
+
+
+ +
+

The userId of the logged-in user or the person sharing a folder publicly

+
userId : string
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ string +
+
+
+ +
+

The userFolder of the logged-in user or the ORIGINAL owner of the files which are shared +publicly

+
userFolder : \OCP\Files\Folder|null
+
+
+
+
+

A share needs to be tracked back to its original owner in order to be able to access the +resource

+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\Files\Folder|null +
+
+
+ +
+

userManager

+
userManager : \OCP\IUserManager
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\IUserManager +
+
+
+ +
+

sharedNodeId

+
sharedNodeId : integer
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ integer +
+
+
+ +
+

serverContainer

+
serverContainer : \OCP\IServerContainer
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\IServerContainer +
+
+
+ +
+

logger

+
logger : \OCP\ILogger
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\ILogger +
+
+
+ +
+

The path to the userFolder for users with accounts: /userId/files

+
fromRootToFolder : string
+
+
+
+
+

For public folders, it's the path from the shared folder to the root folder in the original +owner's filesystem: /userId/files/parent_folder/shared_folder

+ + + + + + +
+ var + + +
+ +

Type(s)

+ string +
+
+
+ +
+

The name of the shared folder

+
folderName : string
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ string +
+
+
+ +
+

sharePassword

+
sharePassword : string
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Environment.EnvironmentException.html b/build/documentation/api/classes/OCA.Gallery.Environment.EnvironmentException.html new file mode 100644 index 00000000..e6b1a561 --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Environment.EnvironmentException.html @@ -0,0 +1,229 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Environment\EnvironmentException + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

EnvironmentException

+ + Extends \Exception + +

Thrown when the service cannot reply to a request

+
+
+ +
+ + + + + +
+ package + + +

Default

+
+ +

Methods

+ +
+

Constructor

+
__construct(string $msg) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$msg

+ string

the message contained in the exception

+
+ +
+
+ +
+ + +
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Environment.NotFoundEnvException.html b/build/documentation/api/classes/OCA.Gallery.Environment.NotFoundEnvException.html new file mode 100644 index 00000000..6f5c068a --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Environment.NotFoundEnvException.html @@ -0,0 +1,229 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Environment\NotFoundEnvException + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

NotFoundEnvException

+ + Extends \OCA\Gallery\Environment\EnvironmentException + +

Thrown when the service cannot reply to a request

+
+
+ +
+ + + + + +
+ package + + +

Default

+
+ +

Methods

+ +
+

Constructor

+
__construct(string $msg) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$msg

+ string

the message contained in the exception

+
+ +
+
+ +
+ + +
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Http.ImageResponse.html b/build/documentation/api/classes/OCA.Gallery.Http.ImageResponse.html new file mode 100644 index 00000000..911ffd46 --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Http.ImageResponse.html @@ -0,0 +1,295 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Http\ImageResponse + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

ImageResponse

+ + Extends \OCP\AppFramework\Http\Response + +

A renderer for images

+
+
+ +
+ + + + + +
+ package + + +

OCA\Gallery\Http

+
+ +

Methods

+ +
+

Constructor

+
__construct(array $image, integer $statusCode = \OCP\AppFramework\Http::STATUS_OK) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$image

+ array

image meta data

+
+
+

$statusCode

+ integer

the HTTP status code, defaults to 200

+
+ +
+
+ +
+ +
+

Returns the rendered image

+
render() : string
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ string

the file

+
+
+ +
+ + +

Properties

+ +
+

preview

+
preview : \OC_Image|string
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OC_Image|string +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Middleware.CheckException.html b/build/documentation/api/classes/OCA.Gallery.Middleware.CheckException.html new file mode 100644 index 00000000..ddf6e7f1 --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Middleware.CheckException.html @@ -0,0 +1,233 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Middleware\CheckException + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

CheckException

+ + Extends \Exception + +

Thrown when one of the tests in the "check" middlewares fails

+
+
+ +
+ + + + + +
+ package + + +

OCA\Gallery\Middleware

+
+ +

Methods

+ +
+

Constructor

+
__construct(string $msg, integer $code) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$msg

+ string

the message contained in the exception

+
+
+

$code

+ integer

the HTTP status code

+
+ +
+
+ +
+ + +
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Middleware.CheckMiddleware.html b/build/documentation/api/classes/OCA.Gallery.Middleware.CheckMiddleware.html new file mode 100644 index 00000000..3c3b3701 --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Middleware.CheckMiddleware.html @@ -0,0 +1,650 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Middleware\CheckMiddleware + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

CheckMiddleware

+ + Extends \OCP\AppFramework\Middleware + +

Checks that we have a valid token linked to a valid resource and that the +user is authorised to access it

+
+
+ +
+ + + + + +
+ package + + +

OCA\Gallery\Middleware

+
+ +

Methods

+ +
+

__construct

+
__construct( $appName, \OCP\IRequest $request, \OCP\IURLGenerator $urlGenerator, \OCP\ILogger $logger) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$appName

+

+
+
+

$request

+ \OCP\IRequest

+
+
+

$urlGenerator

+ \OCP\IURLGenerator

+
+
+

$logger

+ \OCP\ILogger

+
+ +
+
+ +
+ +
+

If a CheckException is being caught, clients who sent an ajax requests +get a JSON error response while the others are redirected to an error +page

+
afterException( $controller,  $methodName, \Exception $exception) 
+
+
+ + +
+
+
+ + + + + + + + + + + + + + +
+ inheritDoc + + + +
+ + +
+ + +
+ +

Arguments

+
+

$controller

+

+
+
+

$methodName

+

+
+
+

$exception

+ \Exception

+
+ +
+
+ +
+ +
+

Decides which type of response to send

+
computeResponse(string $message, integer $code) : \OCP\AppFramework\Http\JSONResponse|\OCP\AppFramework\Http\RedirectResponse|\OCP\AppFramework\Http\TemplateResponse
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$message

+ string

+
+
+

$code

+ integer

+
+ +

Response

+ \OCP\AppFramework\Http\JSONResponse|\OCP\AppFramework\Http\RedirectResponse|\OCP\AppFramework\Http\TemplateResponse

+
+
+ +
+ +
+

Logs the error and raises an exception

+
logAndThrow(string $message, integer $code) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$message

+ string

+
+
+

$code

+ integer

+
+ +
+
+ +
+ +
+

Redirects the client to an error page

+
redirectToErrorPage(string $message, integer $code) : \OCP\AppFramework\Http\RedirectResponse
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$message

+ string

+
+
+

$code

+ integer

+
+ +

Response

+ \OCP\AppFramework\Http\RedirectResponse

+
+
+ +
+ +
+

Shows an authentication form

+
sendHtml401() : \OCP\AppFramework\Http\TemplateResponse
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ \OCP\AppFramework\Http\TemplateResponse

+
+
+ +
+ +
+

Redirects the client to an error page or shows an authentication form

+
sendHtmlResponse(string $message, integer $code) : \OCP\AppFramework\Http\RedirectResponse|\OCP\AppFramework\Http\TemplateResponse
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$message

+ string

+
+
+

$code

+ integer

+
+ +

Response

+ \OCP\AppFramework\Http\RedirectResponse|\OCP\AppFramework\Http\TemplateResponse

+
+
+ +
+ +
+

Returns a JSON response to the client

+
sendJsonResponse(string $message, integer $code) : \OCP\AppFramework\Http\JSONResponse
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$message

+ string

+
+
+

$code

+ integer

+
+ +

Response

+ \OCP\AppFramework\Http\JSONResponse

+
+
+ +
+ + +

Properties

+ +
+

appName

+
appName : string
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ string +
+
+
+ +
+

request

+
request : \OCP\IRequest
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\IRequest +
+
+
+ +
+

urlGenerator

+
urlGenerator : \OCP\IURLGenerator
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\IURLGenerator +
+
+
+ +
+

logger

+
logger : \OCP\ILogger
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\ILogger +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Middleware.EnvCheckMiddleware.html b/build/documentation/api/classes/OCA.Gallery.Middleware.EnvCheckMiddleware.html new file mode 100644 index 00000000..2b7eb192 --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Middleware.EnvCheckMiddleware.html @@ -0,0 +1,1296 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Middleware\EnvCheckMiddleware + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

EnvCheckMiddleware

+ + Extends \OCA\Gallery\Middleware\CheckMiddleware + +

Checks that we have a valid token linked to a valid resource and that the +user is authorised to access it

+
+
+

Once all checks have been passed, the environment is ready to use

+
+ + + + + +
+ package + + +

OCA\Gallery\Middleware

+
+ +

Methods

+ +
+

__construct

+
__construct( $appName, \OCP\IRequest $request, \OCP\IURLGenerator $urlGenerator, \OCP\ILogger $logger) 
+
+ inherited
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$appName

+

+
+
+

$request

+ \OCP\IRequest

+
+
+

$urlGenerator

+ \OCP\IURLGenerator

+
+
+

$logger

+ \OCP\ILogger

+
+ +
+
+ +
+ +
+

If a CheckException is being caught, clients who sent an ajax requests +get a JSON error response while the others are redirected to an error +page

+
afterException( $controller,  $methodName, \Exception $exception) 
+
+ inherited
+ + +
+
+
+ + + + + + + + + + + + + + +
+ inheritDoc + + + +
+ + +
+ + +
+ +

Arguments

+
+

$controller

+

+
+
+

$methodName

+

+
+
+

$exception

+ \Exception

+
+ +
+
+ +
+ +
+

Authenticate link item with the given password +or with the session if no password was given.

+
authenticate(array|boolean $linkItem, string $password) : boolean
+
+
+ + +
+
+
+ + + + + + + + + + + + + + +
+ fixme + + +

@LukasReschke says: Migrate old hashes to new hash format +Due to the fact that there is no reasonable functionality to update the password +of an existing share no migration is yet performed there. +The only possibility is to update the existing share which will result in a new +share ID and is a major hack.

+

In the future the migration should be performed once there is a proper method +to update the share's password. (for example $share->updatePassword($password)

+
+ link + + +

https://github.com/owncloud/core/issues/10671

+
+ throws + + + +
+ +

Arguments

+
+

$linkItem

+ array|boolean

+
+
+

$password

+ string

+
+ +

Response

+ boolean

true if authorized, an exception is raised otherwise

+
+
+ +
+ +
+

Checks that we have a valid token linked to a valid resource and that the +user is authorised to access it

+
beforeController( $controller,  $methodName) 
+
+
+ + +
+
+

Inspects the controller method annotations and if PublicPage is found +it checks that we have a token and an optional password giving access to a valid resource. +Once that's done, the environment is setup so that our services can find the resources they +need.

+

The checks are not performed on "guest" pages and the environment is not setup. Typical +guest pages are anonymous error ages

+ + + + + + + + + + + + + + +
+ inheritDoc + + + +
+ + +
+ + +
+ +

Arguments

+
+

$controller

+

+
+
+

$methodName

+

+
+ +
+
+ +
+ +
+

Checks if a password is required or if the one supplied is working

+
checkAuthorisation(array|boolean $linkItem, string|null $password) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$linkItem

+ array|boolean

+
+
+

$password

+ string|null

optional password

+
+ +
+
+ +
+ +
+

Makes sure an item type was set for that token

+
checkItemType(array|boolean $linkItem) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$linkItem

+ array|boolean

+
+ +
+
+ +
+ +
+

Makes sure that the token exists

+
checkLinkItemExists(array|boolean $linkItem) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$linkItem

+ array|boolean

+
+ +
+
+ +
+ +
+

Makes sure that the token contains all the information that we need

+
checkLinkItemIsValid(array|boolean $linkItem, string $token) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$linkItem

+ array|boolean

+
+
+

$token

+ string

+
+ +
+
+ +
+ +
+

Validates the given password

+
checkPassword(array|boolean $linkItem, string $password) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$linkItem

+ array|boolean

+
+
+

$password

+ string

+
+ +
+
+ +
+ +
+

Makes sure the user is already properly authenticated when a password is required and none +was provided

+
checkSession(array|boolean $linkItem) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$linkItem

+ array|boolean

+
+ +
+
+ +
+ +
+

Decides which type of response to send

+
computeResponse(string $message, integer $code) : \OCP\AppFramework\Http\JSONResponse|\OCP\AppFramework\Http\RedirectResponse|\OCP\AppFramework\Http\TemplateResponse
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$message

+ string

+
+
+

$code

+ integer

+
+ +

Response

+ \OCP\AppFramework\Http\JSONResponse|\OCP\AppFramework\Http\RedirectResponse|\OCP\AppFramework\Http\TemplateResponse

+
+
+ +
+ +
+

Validates a token to make sure its linked to a valid resource

+
getLinkItem(string $token) : array
+
+
+ + +
+
+

Logic mostly duplicated from @see \OCA\Files_Sharing\Helper

+ + + + + + + + + + +
+ fixme + + +

setIncognitoMode in 8.1 https://github.com/owncloud/core/pull/12912

+
+ throws + + + +
+ +

Arguments

+
+

$token

+ string

+
+ +

Response

+ array

+
+
+ +
+ +
+

Logs the error and raises an exception

+
logAndThrow(string $message, integer $code) 
+
+ inherited
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$message

+ string

+
+
+

$code

+ integer

+
+ +
+
+ +
+ +
+

Throws an exception because no token was provided

+
noTokenFound() 
+
+
+ + +
+
+
+ + + + + + + + + + + + + + +
+ throws + + + +
+ + +
+ + +
+ + +
+
+ +
+ +
+

Redirects the client to an error page

+
redirectToErrorPage(string $message, integer $code) : \OCP\AppFramework\Http\RedirectResponse
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$message

+ string

+
+
+

$code

+ integer

+
+ +

Response

+ \OCP\AppFramework\Http\RedirectResponse

+
+
+ +
+ +
+

Shows an authentication form

+
sendHtml401() : \OCP\AppFramework\Http\TemplateResponse
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ \OCP\AppFramework\Http\TemplateResponse

+
+
+ +
+ +
+

Redirects the client to an error page or shows an authentication form

+
sendHtmlResponse(string $message, integer $code) : \OCP\AppFramework\Http\RedirectResponse|\OCP\AppFramework\Http\TemplateResponse
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$message

+ string

+
+
+

$code

+ integer

+
+ +

Response

+ \OCP\AppFramework\Http\RedirectResponse|\OCP\AppFramework\Http\TemplateResponse

+
+
+ +
+ +
+

Returns a JSON response to the client

+
sendJsonResponse(string $message, integer $code) : \OCP\AppFramework\Http\JSONResponse
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$message

+ string

+
+
+

$code

+ integer

+
+ +

Response

+ \OCP\AppFramework\Http\JSONResponse

+
+
+ +
+ +
+

Checks that we have a token and an optional password giving access to a +valid resource. Sets the token based environment after that

+
validateAndSetTokenBasedEnv() 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ + +
+
+ +
+ + +

Properties

+ +
+

hasher

+
hasher : \OCP\Security\IHasher
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\Security\IHasher +
+
+
+ +
+

session

+
session : \OCP\ISession
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\ISession +
+
+
+ +
+

environment

+
environment : \OCA\Gallery\Environment\Environment
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Environment\Environment +
+
+
+ +
+

reflector

+
reflector : \OCP\AppFramework\Utility\IControllerMethodReflector
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\AppFramework\Utility\IControllerMethodReflector +
+
+
+ +
+

appName

+
appName : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ string +
+
+
+ +
+

request

+
request : \OCP\IRequest
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\IRequest +
+
+
+ +
+

urlGenerator

+
urlGenerator : \OCP\IURLGenerator
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\IURLGenerator +
+
+
+ +
+

logger

+
logger : \OCP\ILogger
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\ILogger +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Middleware.SharingCheckMiddleware.html b/build/documentation/api/classes/OCA.Gallery.Middleware.SharingCheckMiddleware.html new file mode 100644 index 00000000..af59bb2a --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Middleware.SharingCheckMiddleware.html @@ -0,0 +1,796 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Middleware\SharingCheckMiddleware + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

SharingCheckMiddleware

+ + Extends \OCA\Gallery\Middleware\CheckMiddleware + +

Checks whether the "sharing check" is enabled

+
+
+ +
+ + + + + +
+ package + + +

OCA\Gallery\SharingCheckMiddleware

+
+ +

Methods

+ +
+

__construct

+
__construct( $appName, \OCP\IRequest $request, \OCP\IURLGenerator $urlGenerator, \OCP\ILogger $logger) 
+
+ inherited
+ + +
+
+
+ + + + + + + + + + +
+ + +
+ + +
+ +

Arguments

+
+

$appName

+

+
+
+

$request

+ \OCP\IRequest

+
+
+

$urlGenerator

+ \OCP\IURLGenerator

+
+
+

$logger

+ \OCP\ILogger

+
+ +
+
+ +
+ +
+

If a CheckException is being caught, clients who sent an ajax requests +get a JSON error response while the others are redirected to an error +page

+
afterException( $controller,  $methodName, \Exception $exception) 
+
+ inherited
+ + +
+
+
+ + + + + + + + + + + + + + +
+ inheritDoc + + + +
+ + +
+ + +
+ +

Arguments

+
+

$controller

+

+
+
+

$methodName

+

+
+
+

$exception

+ \Exception

+
+ +
+
+ +
+ +
+

Check if sharing is enabled before the controllers is executed

+
beforeController( $controller,  $methodName) 
+
+
+ + +
+
+

Inspects the controller method annotations and if PublicPage is found +it makes sure that sharing is enabled in the configuration settings

+

The check is not performed on "guest" pages which don't require sharing +to be enabled

+ + + + + + + + + + + + + + +
+ inheritDoc + + + +
+ + +
+ + +
+ +

Arguments

+
+

$controller

+

+
+
+

$methodName

+

+
+ +
+
+ +
+ +
+

Decides which type of response to send

+
computeResponse(string $message, integer $code) : \OCP\AppFramework\Http\JSONResponse|\OCP\AppFramework\Http\RedirectResponse|\OCP\AppFramework\Http\TemplateResponse
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$message

+ string

+
+
+

$code

+ integer

+
+ +

Response

+ \OCP\AppFramework\Http\JSONResponse|\OCP\AppFramework\Http\RedirectResponse|\OCP\AppFramework\Http\TemplateResponse

+
+
+ +
+ +
+

Checks whether public sharing (via links) is enabled

+
isSharingEnabled() : boolean
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ boolean

+
+
+ +
+ +
+

Logs the error and raises an exception

+
logAndThrow(string $message, integer $code) 
+
+ inherited
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$message

+ string

+
+
+

$code

+ integer

+
+ +
+
+ +
+ +
+

Redirects the client to an error page

+
redirectToErrorPage(string $message, integer $code) : \OCP\AppFramework\Http\RedirectResponse
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$message

+ string

+
+
+

$code

+ integer

+
+ +

Response

+ \OCP\AppFramework\Http\RedirectResponse

+
+
+ +
+ +
+

Shows an authentication form

+
sendHtml401() : \OCP\AppFramework\Http\TemplateResponse
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ \OCP\AppFramework\Http\TemplateResponse

+
+
+ +
+ +
+

Redirects the client to an error page or shows an authentication form

+
sendHtmlResponse(string $message, integer $code) : \OCP\AppFramework\Http\RedirectResponse|\OCP\AppFramework\Http\TemplateResponse
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$message

+ string

+
+
+

$code

+ integer

+
+ +

Response

+ \OCP\AppFramework\Http\RedirectResponse|\OCP\AppFramework\Http\TemplateResponse

+
+
+ +
+ +
+

Returns a JSON response to the client

+
sendJsonResponse(string $message, integer $code) : \OCP\AppFramework\Http\JSONResponse
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$message

+ string

+
+
+

$code

+ integer

+
+ +

Response

+ \OCP\AppFramework\Http\JSONResponse

+
+
+ +
+ + +

Properties

+ +
+

config

+
config : \OCP\IConfig
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\IConfig +
+
+
+ +
+

reflector

+
reflector : \OCP\AppFramework\Utility\IControllerMethodReflector
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\AppFramework\Utility\IControllerMethodReflector +
+
+
+ +
+

appName

+
appName : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ string +
+
+
+ +
+

request

+
request : \OCP\IRequest
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\IRequest +
+
+
+ +
+

urlGenerator

+
urlGenerator : \OCP\IURLGenerator
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\IURLGenerator +
+
+
+ +
+

logger

+
logger : \OCP\ILogger
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\ILogger +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Preview.Preview.html b/build/documentation/api/classes/OCA.Gallery.Preview.Preview.html new file mode 100644 index 00000000..8a3a5ba5 --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Preview.Preview.html @@ -0,0 +1,904 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Preview\Preview + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

Preview

+ + +

Generates previews

+
+
+ +
+ + + + + + + + + +
+ todo + + +

On OC8.2, replace \OC\Preview with IPreview

+
+ package + + +

OCA\Gallery\Preview

+
+ +

Methods

+ +
+

Constructor

+
__construct(\OCP\IConfig $config, \OCP\IPreview $previewManager, \OCP\ILogger $logger) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$config

+ \OCP\IConfig

+
+
+

$previewManager

+ \OCP\IPreview

+
+
+

$logger

+ \OCP\ILogger

+
+ +
+
+ +
+ +
+

Calculates the new dimensions so that it fits in the dimensions requested by the client

+
calculateNewDimensions(integer $previewWidth, integer $previewHeight, integer $maxWidth, integer $maxHeight) : array
+
+
+ + +
+
+
+ + + + + + +
+ link + + +

https://stackoverflow.com/questions/3050952/resize-an-image-and-fill-gaps-of-proportions-with-a-color

+
+ +

Arguments

+
+

$previewWidth

+ integer

+
+
+

$previewHeight

+ integer

+
+
+

$maxWidth

+ integer

+
+
+

$maxHeight

+ integer

+
+ +

Response

+ array

+
+
+ +
+ +
+

Makes a preview fit in the asked dimension and, if required, fills the empty space

+
fixPreview(\OC_Image $previewData, integer $previewWidth, integer $previewHeight, integer $maxWidth, integer $maxHeight, boolean $square) : \OC_Image
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$previewData

+ \OC_Image

+
+
+

$previewWidth

+ integer

+
+
+

$previewHeight

+ integer

+
+
+

$maxWidth

+ integer

+
+
+

$maxHeight

+ integer

+
+
+

$square

+ boolean

+
+ +

Response

+ \OC_Image

+
+
+ +
+ +
+

Fixes the preview cache by replacing the broken thumbnail with ours

+
fixPreviewCache(resource $fixedPreview) : \OC_Image
+
+
+ + +
+
+

WARNING: Will break if the thumbnail folder ever moves or if encryption is turned on for +thumbnails

+ + +
+ +

Arguments

+
+

$fixedPreview

+ resource

+
+ +

Response

+ \OC_Image

+
+
+ +
+ +
+

Asks core for a preview based on our criteria

+
getPreviewFromCore(boolean $keepAspect) : \OC_Image
+
+
+ + +
+
+
+ + + + + + +
+ todo + + +

Need to read scaling setting from settings

+
+ +

Arguments

+
+

$keepAspect

+ boolean

+
+ +

Response

+ \OC_Image

+
+
+ +
+ +
+

Returns true if the passed mime type is supported

+
isMimeSupported(string $mimeType = '*') : boolean
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$mimeType

+ string

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Returns a preview based on OC's preview class and our custom methods

+
preparePreview(integer $maxWidth, integer $maxHeight, boolean $keepAspect) : \OCA\Gallery\Preview\array<string,string|\OC_Image>|false
+
+
+ + +
+
+

We check that the preview returned by the Preview class can be used by +the browser. If not, we send the mime icon and change the status code so +that the client knows that the process has failed.

+ + + + + + +
+ fixme + + +

setKeepAspect is missing from public interface. +https://github.com/owncloud/core/issues/12772

+
+ +

Arguments

+
+

$maxWidth

+ integer

+
+
+

$maxHeight

+ integer

+
+
+

$keepAspect

+ boolean

+
+ +

Response

+ \OCA\Gallery\Preview\array|false

+
+
+ +
+ +
+

Makes sure we return previews of the asked dimensions and fix the cache +if necessary

+
previewValidator(boolean $square) : \OC_Image
+
+
+ + +
+
+

The Preview class sometimes return previews which are either wider or +smaller than the asked dimensions. This happens when one of the original +dimension is smaller than what is asked for

+

For square previews, we also need to make sure the entire surface is filled in order to make +it easier to work with when building albums

+ + +
+ +

Arguments

+
+

$square

+ boolean

+
+ +

Response

+ \OC_Image

+
+
+ +
+ +
+

Mixes a transparent background with a resized foreground preview

+
processPreview(\OC_Image $previewData, integer $previewWidth, integer $previewHeight, integer $newWidth, integer $newHeight, integer $maxWidth, integer $maxHeight, integer $newX, integer $newY) : resource
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$previewData

+ \OC_Image

+
+
+

$previewWidth

+ integer

+
+
+

$previewHeight

+ integer

+
+
+

$newWidth

+ integer

+
+
+

$newHeight

+ integer

+
+
+

$maxWidth

+ integer

+
+
+

$maxHeight

+ integer

+
+
+

$newX

+ integer

+
+
+

$newY

+ integer

+
+ +

Response

+ resource

+
+
+ +
+ +
+

Makes a preview fit in the asked dimension and, if required, fills the empty space

+
resize(\OC_Image $previewData, integer $previewWidth, integer $previewHeight, integer $maxWidth, integer $maxHeight, boolean $fill) : resource
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$previewData

+ \OC_Image

+
+
+

$previewWidth

+ integer

+
+
+

$previewHeight

+ integer

+
+
+

$maxWidth

+ integer

+
+
+

$maxHeight

+ integer

+
+
+

$fill

+ boolean

+
+ +

Response

+ resource

+
+
+ +
+ +
+

Initialises the view which will be used to access files and generate previews

+
setupView(string $userId, \OCP\Files\File $file, string $imagePathFromFolder) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ fixme + + +

Private API, but can't use the PreviewManager yet as it's incomplete

+
+ + +
+ +

Arguments

+
+

$userId

+ string

+
+
+

$file

+ \OCP\Files\File

+
+
+

$imagePathFromFolder

+ string

+
+ +
+
+ +
+ + +

Properties

+ +
+

dataDir

+
dataDir : string
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ string +
+
+
+ +
+

previewManager

+
previewManager : mixed
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ mixed +
+
+
+ +
+

logger

+
logger : \OCP\ILogger
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\ILogger +
+
+
+ +
+

userId

+
userId : string
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ string +
+
+
+ +
+

preview

+
preview : \OC\Preview
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OC\Preview +
+
+
+ +
+

file

+
file : \OCP\Files\File
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\Files\File +
+
+
+ +
+

dims

+
dims : array<mixed,integer>
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ array<mixed,integer> +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Service.Base64Encode.html b/build/documentation/api/classes/OCA.Gallery.Service.Base64Encode.html new file mode 100644 index 00000000..df8a278b --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Service.Base64Encode.html @@ -0,0 +1,224 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Service\Base64Encode + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Base64Encode

+ + +

Base64 encoding utility method

+
+
+ +
+ + + + + +
+ package + + +

OCA\Gallery\Service

+
+ +

Methods

+ +
+

Returns base64 encoded data of a preview

+
encode(\OC_Image|string $previewData) : string
+
+
+ + +
+
+

Using base64_encode for files which are downloaded +(cached Thumbnails, SVG, GIFs) and using __toStrings +for the previews which are instances of \OC_Image

+ + +
+ +

Arguments

+
+

$previewData

+ \OC_Image|string

+
+ +

Response

+ string

+
+
+ +
+ + +
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Service.ConfigParser.html b/build/documentation/api/classes/OCA.Gallery.Service.ConfigParser.html new file mode 100644 index 00000000..50a796c6 --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Service.ConfigParser.html @@ -0,0 +1,545 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Service\ConfigParser + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

ConfigParser

+ + +

Parses configuration files

+
+
+ +
+ + + + + +
+ package + + +

OCA\Gallery\Service

+
+ +

Methods

+ +
+

Adds a config sub-section to the global config

+
addConfigItem(string $key, array $parsedConfigItem, integer $level) : \OCA\Gallery\Service\array<null|\OCA\Gallery\Service\array<string,string>,bool>
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

+
+
+

$parsedConfigItem

+ array

+
+
+

$level

+ integer

+
+ +

Response

+ \OCA\Gallery\Service\array,bool>

+
+
+ +
+ +
+

Removes the BOM from a file

+
bomFixer(string $file) : string
+
+
+ + +
+
+ + + +
+ +

Arguments

+
+

$file

+ string

+
+ +

Response

+ string

+
+
+ +
+ +
+

Returns either the local config or one merged with a config containing sorting information

+
buildAlbumConfig(array $currentConfig, array $parsedConfig,  $configItems, integer $level) : \OCA\Gallery\Service\array<null|\OCA\Gallery\Service\array,array<string,bool>>
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$currentConfig

+ array

+
+
+

$parsedConfig

+ array

+
+
+

$configItems

+

+
+
+

$level

+ integer

+
+ +

Response

+ \OCA\Gallery\Service\array>

+
+
+ +
+ +
+

Returns a parsed global configuration if one was found in the root folder

+
getFeaturesList(\OCP\Files\Folder $folder, string $configName) : null|array
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$folder

+ \OCP\Files\Folder

+
+
+

$configName

+ string

+
+ +

Response

+ null|array

+
+
+ +
+ +
+

Returns a parsed configuration if one was found in the current folder

+
getFolderConfig(\OCP\Files\Folder $folder, string $configName, array $currentConfig,  $configItems, integer $level) : array
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$folder

+ \OCP\Files\Folder

+
+
+

$configName

+ string

+
+
+

$currentConfig

+ array

+
+
+

$configItems

+

+
+
+

$level

+ integer

+
+ +

Response

+ array

<null|array,array<string,bool>>

+
+
+ +
+ +
+

Determines if we can use a configuration sub-section found in parent folders

+
isConfigInheritable(array $parsedConfigItem) : boolean
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$parsedConfigItem

+ array

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Determines if we already have everything we need for this configuration sub-section

+
isConfigItemComplete(string $key, array $parsedConfig, boolean $complete) : boolean
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$key

+ string

+
+
+

$parsedConfig

+ array

+
+
+

$complete

+ boolean

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Determines if we can use this configuration sub-section

+
isConfigUsable(array $parsedConfigItem, integer $level) : boolean
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$parsedConfigItem

+ array

+
+
+

$level

+ integer

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Returns a parsed configuration

+
parseConfig(\OCP\Files\Folder $folder, string $configName) : array|array<mixed,string>
+
+
+ + +
+
+
+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$folder

+ \OCP\Files\Folder

+
+
+

$configName

+ string

+
+ +

Response

+ array|array<mixed,string>

+
+
+ +
+ + +
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Service.ConfigService.html b/build/documentation/api/classes/OCA.Gallery.Service.ConfigService.html new file mode 100644 index 00000000..dfa47e92 --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Service.ConfigService.html @@ -0,0 +1,1284 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Service\ConfigService + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

ConfigService

+ + Extends \OCA\Gallery\Service\FilesService + +

Finds configurations files and returns a configuration array

+
+
+

Checks the current and parent folders for configuration files and the privacy flag +Supports explicit inheritance

+
+ + + + + +
+ package + + +

OCA\Gallery\Service

+
+ +

Methods

+ +
+

Constructor

+
__construct(string $appName, \OCA\Gallery\Environment\Environment $environment, \OCP\ILogger $logger) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$appName

+ string

+
+ +
+

$logger

+ \OCP\ILogger

+
+ +
+
+ +
+ +
+

Returns a parsed configuration if one was found in the current folder or generates an error +message to send back

+
buildFolderConfig(\OCP\Files\Folder $folder, string $configName, array $config, integer $level) : array
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$folder

+ \OCP\Files\Folder

+
+
+

$configName

+ string

+
+
+

$config

+ array

+
+
+

$level

+ integer

+
+ +

Response

+ array

+
+
+ +
+ +
+

Determines if we have a configuration file to work with

+
configExists(\OCP\Files\Folder $rootFolder) : boolean
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$rootFolder

+ \OCP\Files\Folder

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Returns an album configuration array

+
getAlbumConfig(\OCP\Files\Folder $folder, string $privacyChecker, string $configName, integer $level, array $config = array()) : \OCA\Gallery\Service\array<null|\OCA\Gallery\Service\array,bool>
+
+
+ + +
+
+

Goes through all the parent folders until either we're told the album is private or we've +reached the root folder

+ + +
+ +

Arguments

+
+

$folder

+ \OCP\Files\Folder

+
+
+

$privacyChecker

+ string

+
+
+

$configName

+ string

+
+
+

$level

+ integer

+
+
+

$config

+ array

+
+ +

Response

+ \OCA\Gallery\Service\array

+
+
+ +
+ +
+

Returns information about the currently selected folder

+
getAlbumInfo(\OCP\Files\Folder $folderNode, string $folderPathFromRoot, array $features) : array|null
+
+
+ + +
+
+
    +
  • privacy setting +
      +
    • special configuration
    • +
    • permissions
    • +
    • ID
    • +
  • +
+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$folderNode

+ \OCP\Files\Folder

+
+
+

$folderPathFromRoot

+ string

+
+
+

$features

+ array

+
+ +

Response

+ array|null

+
+
+ +
+ +
+

Returns the node if it's a folder we have access to

+
getAllowedSubFolder(\OCP\Files\Folder $node, string $nodeType) : array|\OCP\Files\Folder
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$node

+ \OCP\Files\Folder

+
+
+

$nodeType

+ string

+
+ +

Response

+ array|\OCP\Files\Folder

+
+
+ +
+ +
+

Returns a list of supported features

+
getFeaturesList() : array
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ array

+
+
+ +
+ +
+

Retrieves all files and sub-folders contained in a folder

+
getNodes(\OCP\Files\Folder $folder, integer $subDepth) : array
+
+ inherited
+ + +
+
+

If we can't find anything in the current folder, we throw an exception as there is no point +in doing any more work, but if we're looking at a sub-folder, we return an empty array so +that it can be simply ignored

+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$folder

+ \OCP\Files\Folder

+
+
+

$subDepth

+ integer

+
+ +

Response

+ array

+
+
+ +
+ +
+

Returns the node type, either 'dir' or 'file'

+
getNodeType(\OCP\Files\Node $node) : string
+
+ inherited
+ + +
+
+

If there is a problem, we return an empty string so that the node can be ignored

+ + +
+ +

Arguments

+
+

$node

+ \OCP\Files\Node

+
+ +

Response

+ string

+
+
+ +
+ +
+

Looks for an album configuration in the parent folder

+
getParentConfig(\OCP\Files\Folder $folder, string $privacyChecker, string $configName, integer $level, array $config) : \OCA\Gallery\Service\array<null|\OCA\Gallery\Service\array,bool>
+
+
+ + +
+
+

We will look up to the real root folder, not the virtual root of a shared folder

+ + +
+ +

Arguments

+
+

$folder

+ \OCP\Files\Folder

+
+
+

$privacyChecker

+ string

+
+
+

$configName

+ string

+
+
+

$level

+ integer

+
+
+

$config

+ array

+
+ +

Response

+ \OCA\Gallery\Service\array

+
+
+ +
+ +
+

Returns the node matching the given ID

+
getResourceFromId(integer $nodeId) : \OCP\Files\Node|null
+
+ inherited
+ + +
+
+
+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$nodeId

+ integer

ID of the resource to locate

+
+ +

Response

+ \OCP\Files\Node|null

+
+
+ +
+ +
+

Determines if we can consider the node mounted locally or if it's been authorised to be +scanned

+
isAllowed(\OCP\Files\Node $node) : boolean
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$node

+ \OCP\Files\Node

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Determines if the files are hosted locally (shared or not) and can be used by the preview +system

+
isAllowedAndAvailable(\OCP\Files\Node $node) : boolean
+
+ inherited
+ + +
+
+

isMounted() doesn't include externally hosted shares, so we need to exclude those from the +non-mounted nodes

+ + +
+ +

Arguments

+
+

$node

+ \OCP\Files\Node

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Determines if the node is available, as in readable

+
isAvailable(\OCP\Files\Node $node) : boolean
+
+ inherited
+ + +
+
+
+ + + + + + +
+ todo + + +

Test to see by how much using file_exists slows things down

+
+ +

Arguments

+
+

$node

+ \OCP\Files\Node

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Determines if the node is a share which is hosted externally

+
isExternalShare(\OCP\Files\Node $node) : boolean
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$node

+ \OCP\Files\Node

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Determines if the user has allowed the use of external shares

+
isExternalShareAllowed() : boolean
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ boolean

+
+
+ +
+ +
+

Determines if we've reached the root folder

+
isRootFolder(\OCP\Files\Folder $folder, integer $level) : boolean
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$folder

+ \OCP\Files\Folder

+
+
+

$level

+ integer

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Logs the error and raises a "Forbidden" type exception

+
logAndThrowForbidden(string $message) 
+
+ inherited
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$message

+ string

+
+ +
+
+ +
+ +
+

Logs the error and raises a "Not found" type exception

+
logAndThrowNotFound(string $message) 
+
+ inherited
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$message

+ string

+
+ +
+
+ +
+ +
+

Throws an exception if this problem occurs in the current folder, otherwise just ignores the +sub-folder

+
recoverFromGetNodesError(integer $subDepth, \Exception $exception) : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$subDepth

+ integer

+
+
+

$exception

+ \Exception

+
+ +

Response

+ array

+
+
+ +
+ +
+

Removes links if they were collected outside of the virtual root

+
validatesInfoConfig(array $albumConfig) : array
+
+
+ + +
+
+

This is for shared folders which have a virtual root

+ + +
+ +

Arguments

+
+

$albumConfig

+ array

+
+ +

Response

+ array

+
+
+ +
+ + +

Properties

+ +
+

configName

+
configName : string
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ string +
+
+
+ +
+

privacyChecker

+
privacyChecker : string
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ string +
+
+
+ +
+

<string,bool>

+
configItems : array
+
+
+
+
+
+ + + + + + +
+ var + +

<string,bool>

+
+ +

Type(s)

+ array +
+
+
+ +
+

configParser

+
configParser : \OCA\Gallery\Service\ConfigParser
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Service\ConfigParser +
+
+
+ +
+

virtualRootLevel

+
virtualRootLevel : integer
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ integer +
+
+
+ +
+

features

+
features : array<mixed,string>
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ array<mixed,string> +
+
+
+ +
+

appName

+
appName : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ string +
+
+
+ +
+

environment

+
environment : \OCA\Gallery\Environment\Environment
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Environment\Environment +
+
+
+ +
+

logger

+
logger : \OCP\ILogger
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\ILogger +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Service.DownloadService.html b/build/documentation/api/classes/OCA.Gallery.Service.DownloadService.html new file mode 100644 index 00000000..bd40ed37 --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Service.DownloadService.html @@ -0,0 +1,521 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Service\DownloadService + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

DownloadService

+ + Extends \OCA\Gallery\Service\Service + +

Prepares the file to download

+
+
+ +
+ + + + + +
+ package + + +

OCA\Gallery\Service

+
+ +

Methods

+ +
+

Constructor

+
__construct(string $appName, \OCA\Gallery\Environment\Environment $environment, \OCP\ILogger $logger) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$appName

+ string

+
+ +
+

$logger

+ \OCP\ILogger

+
+ +
+
+ +
+ +
+

Downloads the requested file

+
downloadFile(\OCP\Files\File $file, boolean $base64Encode = false) : false|array
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$file

+ \OCP\Files\File

+
+
+

$base64Encode

+ boolean

+
+ +

Response

+ false|array

+
+
+ +
+ +
+

Returns base64 encoded data of a preview

+
encode(\OC_Image|string $previewData) : string
+
+ inherited
+ + +
+
+

Using base64_encode for files which are downloaded +(cached Thumbnails, SVG, GIFs) and using __toStrings +for the previews which are instances of \OC_Image

+ + +
+ +

Arguments

+
+

$previewData

+ \OC_Image|string

+
+ +

Response

+ string

+
+
+ +
+ +
+

Returns the node matching the given ID

+
getResourceFromId(integer $nodeId) : \OCP\Files\Node|null
+
+ inherited
+ + +
+
+
+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$nodeId

+ integer

ID of the resource to locate

+
+ +

Response

+ \OCP\Files\Node|null

+
+
+ +
+ +
+

Logs the error and raises a "Forbidden" type exception

+
logAndThrowForbidden(string $message) 
+
+ inherited
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$message

+ string

+
+ +
+
+ +
+ +
+

Logs the error and raises a "Not found" type exception

+
logAndThrowNotFound(string $message) 
+
+ inherited
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$message

+ string

+
+ +
+
+ +
+ + +

Properties

+ +
+

appName

+
appName : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ string +
+
+
+ +
+

environment

+
environment : \OCA\Gallery\Environment\Environment
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Environment\Environment +
+
+
+ +
+

logger

+
logger : \OCP\ILogger
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\ILogger +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Service.FilesService.html b/build/documentation/api/classes/OCA.Gallery.Service.FilesService.html new file mode 100644 index 00000000..7eb3abee --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Service.FilesService.html @@ -0,0 +1,879 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Service\FilesService + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

FilesService

+ + Extends \OCA\Gallery\Service\Service + +

Contains various methods to retrieve information from the filesystem

+
+
+ +
+ + + + + +
+ package + + +

OCA\Gallery\Service

+
+ +

Methods

+ +
+

Constructor

+
__construct(string $appName, \OCA\Gallery\Environment\Environment $environment, \OCP\ILogger $logger) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$appName

+ string

+
+ +
+

$logger

+ \OCP\ILogger

+
+ +
+
+ +
+ +
+

Returns the node if it's a folder we have access to

+
getAllowedSubFolder(\OCP\Files\Folder $node, string $nodeType) : array|\OCP\Files\Folder
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$node

+ \OCP\Files\Folder

+
+
+

$nodeType

+ string

+
+ +

Response

+ array|\OCP\Files\Folder

+
+
+ +
+ +
+

Retrieves all files and sub-folders contained in a folder

+
getNodes(\OCP\Files\Folder $folder, integer $subDepth) : array
+
+
+ + +
+
+

If we can't find anything in the current folder, we throw an exception as there is no point +in doing any more work, but if we're looking at a sub-folder, we return an empty array so +that it can be simply ignored

+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$folder

+ \OCP\Files\Folder

+
+
+

$subDepth

+ integer

+
+ +

Response

+ array

+
+
+ +
+ +
+

Returns the node type, either 'dir' or 'file'

+
getNodeType(\OCP\Files\Node $node) : string
+
+
+ + +
+
+

If there is a problem, we return an empty string so that the node can be ignored

+ + +
+ +

Arguments

+
+

$node

+ \OCP\Files\Node

+
+ +

Response

+ string

+
+
+ +
+ +
+

Returns the node matching the given ID

+
getResourceFromId(integer $nodeId) : \OCP\Files\Node|null
+
+ inherited
+ + +
+
+
+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$nodeId

+ integer

ID of the resource to locate

+
+ +

Response

+ \OCP\Files\Node|null

+
+
+ +
+ +
+

Determines if we can consider the node mounted locally or if it's been authorised to be +scanned

+
isAllowed(\OCP\Files\Node $node) : boolean
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$node

+ \OCP\Files\Node

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Determines if the files are hosted locally (shared or not) and can be used by the preview +system

+
isAllowedAndAvailable(\OCP\Files\Node $node) : boolean
+
+
+ + +
+
+

isMounted() doesn't include externally hosted shares, so we need to exclude those from the +non-mounted nodes

+ + +
+ +

Arguments

+
+

$node

+ \OCP\Files\Node

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Determines if the node is available, as in readable

+
isAvailable(\OCP\Files\Node $node) : boolean
+
+
+ + +
+
+
+ + + + + + +
+ todo + + +

Test to see by how much using file_exists slows things down

+
+ +

Arguments

+
+

$node

+ \OCP\Files\Node

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Determines if the node is a share which is hosted externally

+
isExternalShare(\OCP\Files\Node $node) : boolean
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$node

+ \OCP\Files\Node

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Determines if the user has allowed the use of external shares

+
isExternalShareAllowed() : boolean
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ boolean

+
+
+ +
+ +
+

Determines if we've reached the root folder

+
isRootFolder(\OCP\Files\Folder $folder, integer $level) : boolean
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$folder

+ \OCP\Files\Folder

+
+
+

$level

+ integer

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Logs the error and raises a "Forbidden" type exception

+
logAndThrowForbidden(string $message) 
+
+ inherited
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$message

+ string

+
+ +
+
+ +
+ +
+

Logs the error and raises a "Not found" type exception

+
logAndThrowNotFound(string $message) 
+
+ inherited
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$message

+ string

+
+ +
+
+ +
+ +
+

Throws an exception if this problem occurs in the current folder, otherwise just ignores the +sub-folder

+
recoverFromGetNodesError(integer $subDepth, \Exception $exception) : array
+
+
+ + +
+
+
+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$subDepth

+ integer

+
+
+

$exception

+ \Exception

+
+ +

Response

+ array

+
+
+ +
+ + +

Properties

+ +
+

virtualRootLevel

+
virtualRootLevel : integer
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ integer +
+
+
+ +
+

features

+
features : array<mixed,string>
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ array<mixed,string> +
+
+
+ +
+

appName

+
appName : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ string +
+
+
+ +
+

environment

+
environment : \OCA\Gallery\Environment\Environment
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Environment\Environment +
+
+
+ +
+

logger

+
logger : \OCP\ILogger
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\ILogger +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Service.ForbiddenServiceException.html b/build/documentation/api/classes/OCA.Gallery.Service.ForbiddenServiceException.html new file mode 100644 index 00000000..8175ece7 --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Service.ForbiddenServiceException.html @@ -0,0 +1,229 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Service\ForbiddenServiceException + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

ForbiddenServiceException

+ + Extends \OCA\Gallery\Service\ServiceException + +

Thrown when the service cannot reply to a request

+
+
+ +
+ + + + + +
+ package + + +

Default

+
+ +

Methods

+ +
+

Constructor

+
__construct(string $msg) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$msg

+ string

the message contained in the exception

+
+ +
+
+ +
+ + +
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Service.NotFoundServiceException.html b/build/documentation/api/classes/OCA.Gallery.Service.NotFoundServiceException.html new file mode 100644 index 00000000..43c9eeaa --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Service.NotFoundServiceException.html @@ -0,0 +1,229 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Service\NotFoundServiceException + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

NotFoundServiceException

+ + Extends \OCA\Gallery\Service\ServiceException + +

Thrown when the service cannot reply to a request

+
+
+ +
+ + + + + +
+ package + + +

Default

+
+ +

Methods

+ +
+

Constructor

+
__construct(string $msg) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$msg

+ string

the message contained in the exception

+
+ +
+
+ +
+ + +
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Service.PreviewService.html b/build/documentation/api/classes/OCA.Gallery.Service.PreviewService.html new file mode 100644 index 00000000..88699639 --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Service.PreviewService.html @@ -0,0 +1,957 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Service\PreviewService + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + +
+
+

PreviewService

+ + Extends \OCA\Gallery\Service\Service + +

Generates previews

+
+
+ +
+ + + + + +
+ package + + +

OCA\Gallery\Service

+
+ +

Methods

+ +
+

Constructor

+
__construct(string $appName, \OCA\Gallery\Environment\Environment $environment, \OCP\ILogger $logger) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$appName

+ string

+
+ +
+

$logger

+ \OCP\ILogger

+
+ +
+
+ +
+ +
+

Adds the SVG media type if it's not already there

+
addSvgSupport(array<mixed,string> $supportedMimes, boolean $nativeSvgSupport) : array<mixed,\string>
+
+
+ + +
+
+

If it's enabled, but doesn't work, an exception will be raised when trying to generate a +preview. If it's disabled, we support it via the browser's native support

+ + +
+ +

Arguments

+
+

$supportedMimes

+ array<mixed,string>

+
+
+

$nativeSvgSupport

+ boolean

+
+ +

Response

+ array<mixed,\string>

+
+
+ +
+ +
+

Returns an array containing everything needed by the client to be able to display a preview

+
createPreview(\OCP\Files\File $file, integer $maxX, integer $maxY, boolean $keepAspect = true, boolean $base64Encode = false) : \OCA\Gallery\Service\array<string,\OC_Image|\OCA\Gallery\Service\string>|false
+
+
+ + +
+
+
    +
  • fileid: the file's ID +
      +
    • mimetype: the file's media type
    • +
    • preview: the preview's content
    • +
  • +
+

Example logger +$this->logger->debug( +"[PreviewService] Path : {path} / mime: {mimetype} / fileid: {fileid}", +[ +'path' => $preview['data']['path'], +'mimetype' => $preview['data']['mimetype'], +'fileid' => $preview['fileid'] +] +);

+ + + + + + +
+ todo + + +

Get the max size from the settings

+
+ +

Arguments

+
+

$file

+ \OCP\Files\File

+
+
+

$maxX

+ integer

asked width for the preview

+
+
+

$maxY

+ integer

asked height for the preview

+
+
+

$keepAspect

+ boolean

+
+
+

$base64Encode

+ boolean

+
+ +

Response

+ \OCA\Gallery\Service\array|false

preview data

+
+
+ +
+ +
+

Returns base64 encoded data of a preview

+
encode(\OC_Image|string $previewData) : string
+
+ inherited
+ + +
+
+

Using base64_encode for files which are downloaded +(cached Thumbnails, SVG, GIFs) and using __toStrings +for the previews which are instances of \OC_Image

+ + +
+ +

Arguments

+
+

$previewData

+ \OC_Image|string

+
+ +

Response

+ string

+
+
+ +
+ +
+

Returns the node matching the given ID

+
getResourceFromId(integer $nodeId) : \OCP\Files\Node|null
+
+ inherited
+ + +
+
+
+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$nodeId

+ integer

ID of the resource to locate

+
+ +

Response

+ \OCP\Files\Node|null

+
+
+ +
+ +
+

This builds and returns a list of all supported media types

+
getSupportedMediaTypes(boolean $slideshow, boolean $nativeSvgSupport) : array<mixed,\string>
+
+
+ + +
+
+
+ + + + + + +
+ todo + + +

Native SVG could be disabled via admin settings

+
+ +

Arguments

+
+

$slideshow

+ boolean

+
+
+

$nativeSvgSupport

+ boolean

+
+ +

Response

+ array<mixed,\string>

all supported media types

+
+
+ +
+ +
+

Tests if a GIF is animated

+
isGifAnimated(\OCP\Files\File $file) : boolean
+
+
+ + +
+
+

An animated gif contains multiple "frames", with each frame having a +header made up of:

+
    +
  • a static 4-byte sequence (\x00\x21\xF9\x04)
  • +
  • 4 variable bytes
  • +
  • a static 2-byte sequence (\x00\x2C) (Photoshop uses \x00\x21)
  • +
+

We read through the file until we reach the end of the file, or we've +found at least 2 frame headers

+ + + + + + +
+ link + + +

http://php.net/manual/en/function.imagecreatefromgif.php#104473

+
+ +

Arguments

+
+

$file

+ \OCP\Files\File

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Decides if we should download the GIF or generate a preview

+
isGifPreviewRequired(\OCP\Files\File $file, boolean $animatedPreview) : boolean
+
+
+ + +
+
+

GIFs are downloaded if they're animated and we want to show +animations

+ + +
+ +

Arguments

+
+

$file

+ \OCP\Files\File

+
+
+

$animatedPreview

+ boolean

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Returns true if the passed mime type is supported

+
isMimeSupported(string $mimeType = '*') : boolean
+
+
+ + +
+
+

In case of a failure, we just return that the media type is not supported

+ + +
+ +

Arguments

+
+

$mimeType

+ string

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Decides if we should download the file instead of generating a preview

+
isPreviewRequired(\OCP\Files\File $file, boolean $animatedPreview) : boolean
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$file

+ \OCP\Files\File

+
+
+

$animatedPreview

+ boolean

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Decides if we should download the SVG or generate a preview

+
isSvgPreviewRequired() : boolean
+
+
+ + +
+
+

SVGs are downloaded if the SVG converter is disabled +Files of any media type are downloaded if requested by the client

+ + + + + + +
+ + +
+ + +

Response

+ boolean

+
+
+ +
+ +
+

Logs the error and raises a "Forbidden" type exception

+
logAndThrowForbidden(string $message) 
+
+ inherited
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$message

+ string

+
+ +
+
+ +
+ +
+

Logs the error and raises a "Not found" type exception

+
logAndThrowNotFound(string $message) 
+
+ inherited
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$message

+ string

+
+ +
+
+ +
+ +
+

Makes sure we return previews of the asked dimensions and fix the cache +if necessary

+
previewValidator(boolean $square, boolean $base64Encode) : \OC_Image|string
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$square

+ boolean

+
+
+

$base64Encode

+ boolean

+
+ +

Response

+ \OC_Image|string

+
+
+ +
+ + +

Properties

+ +
+

previewManager

+
previewManager : \OCA\Gallery\Preview\Preview
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Preview\Preview +
+
+
+ +
+

baseMimeTypes

+
baseMimeTypes : array<mixed,string>
+
+
+
+
+
+ + + + + + + + + + +
+ todo + +

This hard-coded array could be replaced by admin settings

+
+ var + + +
+ +

Type(s)

+ array<mixed,string> +
+
+
+ +
+

These types are useful for files preview in the files app, but +not for the gallery side

+
slideshowMimeTypes : array<mixed,string>
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ array<mixed,string> +
+
+
+ +
+

appName

+
appName : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ string +
+
+
+ +
+

environment

+
environment : \OCA\Gallery\Environment\Environment
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Environment\Environment +
+
+
+ +
+

logger

+
logger : \OCP\ILogger
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\ILogger +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Service.SearchFolderService.html b/build/documentation/api/classes/OCA.Gallery.Service.SearchFolderService.html new file mode 100644 index 00000000..79d071cc --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Service.SearchFolderService.html @@ -0,0 +1,1074 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Service\SearchFolderService + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

SearchFolderService

+ + Extends \OCA\Gallery\Service\FilesService + +

Contains various methods to retrieve information from the filesystem

+
+
+ +
+ + + + + +
+ package + + +

OCA\Gallery\Service

+
+ +

Methods

+ +
+

Constructor

+
__construct(string $appName, \OCA\Gallery\Environment\Environment $environment, \OCP\ILogger $logger) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$appName

+ string

+
+ +
+

$logger

+ \OCP\ILogger

+
+ +
+
+ +
+ +
+

This returns the current folder node based on a path

+
findFolder(string $location, integer $depth) : array
+
+
+ + +
+
+

If the path leads to a file, we'll return the node of the containing folder

+

If we can't find anything, we try with the parent folder, up to the root or until we reach +our recursive limit

+ + +
+ +

Arguments

+
+

$location

+ string

+
+
+

$depth

+ integer

+
+ +

Response

+ array

<string,Folder,bool>

+
+
+ +
+ +
+

Returns the node if it's a folder we have access to

+
getAllowedSubFolder(\OCP\Files\Folder $node, string $nodeType) : array|\OCP\Files\Folder
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$node

+ \OCP\Files\Folder

+
+
+

$nodeType

+ string

+
+ +

Response

+ array|\OCP\Files\Folder

+
+
+ +
+ +
+

This returns what we think is the current folder node based on a given path

+
getCurrentFolder(string $location, array<mixed,string> $features) : array
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$location

+ string

+
+
+

$features

+ array<mixed,string>

+
+ +

Response

+ array

<string,Folder,bool>

+
+
+ +
+ +
+

Retrieves all files and sub-folders contained in a folder

+
getNodes(\OCP\Files\Folder $folder, integer $subDepth) : array
+
+ inherited
+ + +
+
+

If we can't find anything in the current folder, we throw an exception as there is no point +in doing any more work, but if we're looking at a sub-folder, we return an empty array so +that it can be simply ignored

+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$folder

+ \OCP\Files\Folder

+
+
+

$subDepth

+ integer

+
+ +

Response

+ array

+
+
+ +
+ +
+

Returns the node type, either 'dir' or 'file'

+
getNodeType(\OCP\Files\Node $node) : string
+
+ inherited
+ + +
+
+

If there is a problem, we return an empty string so that the node can be ignored

+ + +
+ +

Arguments

+
+

$node

+ \OCP\Files\Node

+
+ +

Response

+ string

+
+
+ +
+ +
+

Returns the node matching the given ID

+
getResourceFromId(integer $nodeId) : \OCP\Files\Node|null
+
+ inherited
+ + +
+
+
+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$nodeId

+ integer

ID of the resource to locate

+
+ +

Response

+ \OCP\Files\Node|null

+
+
+ +
+ +
+

hasLocationChanged

+
hasLocationChanged( $depth) : boolean
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$depth

+

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Determines if we can consider the node mounted locally or if it's been authorised to be +scanned

+
isAllowed(\OCP\Files\Node $node) : boolean
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$node

+ \OCP\Files\Node

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Determines if the files are hosted locally (shared or not) and can be used by the preview +system

+
isAllowedAndAvailable(\OCP\Files\Node $node) : boolean
+
+ inherited
+ + +
+
+

isMounted() doesn't include externally hosted shares, so we need to exclude those from the +non-mounted nodes

+ + +
+ +

Arguments

+
+

$node

+ \OCP\Files\Node

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Determines if the node is available, as in readable

+
isAvailable(\OCP\Files\Node $node) : boolean
+
+ inherited
+ + +
+
+
+ + + + + + +
+ todo + + +

Test to see by how much using file_exists slows things down

+
+ +

Arguments

+
+

$node

+ \OCP\Files\Node

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Determines if the node is a share which is hosted externally

+
isExternalShare(\OCP\Files\Node $node) : boolean
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$node

+ \OCP\Files\Node

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Determines if the user has allowed the use of external shares

+
isExternalShareAllowed() : boolean
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ boolean

+
+
+ +
+ +
+

Determines if we've reached the root folder

+
isRootFolder(\OCP\Files\Folder $folder, integer $level) : boolean
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$folder

+ \OCP\Files\Folder

+
+
+

$level

+ integer

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Logs the error and raises a "Forbidden" type exception

+
logAndThrowForbidden(string $message) 
+
+ inherited
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$message

+ string

+
+ +
+
+ +
+ +
+

Logs the error and raises a "Not found" type exception

+
logAndThrowNotFound(string $message) 
+
+ inherited
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$message

+ string

+
+ +
+
+ +
+ +
+

Throws an exception if this problem occurs in the current folder, otherwise just ignores the +sub-folder

+
recoverFromGetNodesError(integer $subDepth, \Exception $exception) : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$subDepth

+ integer

+
+
+

$exception

+ \Exception

+
+ +

Response

+ array

+
+
+ +
+ +
+

Makes sure that the folder is not empty, does meet our requirements in terms of location and +returns details about it

+
sendFolder(string $path, \OCP\Files\Folder $node, boolean $locationHasChanged) : array
+
+
+ + +
+
+
+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$path

+ string

+
+
+

$node

+ \OCP\Files\Folder

+
+
+

$locationHasChanged

+ boolean

+
+ +

Response

+ array

<string,Folder,bool>

+
+
+ +
+ +
+

Makes sure we don't go too far up before giving up

+
validateLocation(string $location, integer $depth) : string
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$location

+ string

+
+
+

$depth

+ integer

+
+ +

Response

+ string

+
+
+ +
+ + +

Properties

+ +
+

virtualRootLevel

+
virtualRootLevel : integer
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ integer +
+
+
+ +
+

features

+
features : array<mixed,string>
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ array<mixed,string> +
+
+
+ +
+

appName

+
appName : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ string +
+
+
+ +
+

environment

+
environment : \OCA\Gallery\Environment\Environment
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Environment\Environment +
+
+
+ +
+

logger

+
logger : \OCP\ILogger
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\ILogger +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Service.SearchMediaService.html b/build/documentation/api/classes/OCA.Gallery.Service.SearchMediaService.html new file mode 100644 index 00000000..01ea3b14 --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Service.SearchMediaService.html @@ -0,0 +1,1284 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Service\SearchMediaService + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

SearchMediaService

+ + Extends \OCA\Gallery\Service\FilesService + +

Searches the instance for media files which can be shown

+
+
+ +
+ + + + + +
+ package + + +

OCA\Gallery\Service

+
+ +

Methods

+ +
+

Constructor

+
__construct(string $appName, \OCA\Gallery\Environment\Environment $environment, \OCP\ILogger $logger) 
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$appName

+ string

+
+ +
+

$logger

+ \OCP\ILogger

+
+ +
+
+ +
+ +
+

Returns true if there is no need to check any other sub-folder at the same depth level

+
abortSearch(integer $subDepth, integer $count) : boolean
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$subDepth

+ integer

+
+
+

$count

+ integer

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Adds various information about a file to the list of results

+
addFileToResults(\OCP\Files\File $file) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$file

+ \OCP\Files\File

+
+ +
+
+ +
+ +
+

Adds the node to the list of images if it's a file and we can generate a preview of it

+
addMediaFile(\OCP\Files\File|\OCP\Files\Folder $node, string $nodeType, integer $albumImageCounter) : integer
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$node

+ \OCP\Files\File|\OCP\Files\Folder

+
+
+

$nodeType

+ string

+
+
+

$albumImageCounter

+ integer

+
+ +

Response

+ integer

+
+
+ +
+ +
+

Checks if we need to look for media files in the specified folder

+
folderNeedsToBeSearched( $subFolders, integer $subDepth, integer $albumImageCounter) : boolean
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$subFolders

+

+
+
+

$subDepth

+ integer

+
+
+

$albumImageCounter

+ integer

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Returns the node if it's a folder we have access to

+
getAllowedSubFolder(\OCP\Files\Folder $node, string $nodeType) : array|\OCP\Files\Folder
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$node

+ \OCP\Files\Folder

+
+
+

$nodeType

+ string

+
+ +

Response

+ array|\OCP\Files\Folder

+
+
+ +
+ +
+

This returns the list of all media files which can be shown starting from the given folder

+
getMediaFiles(\OCP\Files\Folder $folder, array<mixed,string> $supportedMediaTypes, array $features) : \OCA\Gallery\Service\array<string,string|\OCA\Gallery\Service\int>|null
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$folder

+ \OCP\Files\Folder

+
+
+

$supportedMediaTypes

+ array<mixed,string>

+
+
+

$features

+ array

+
+ +

Response

+ \OCA\Gallery\Service\array|null

all the images we could find

+
+
+ +
+ +
+

Retrieves all files and sub-folders contained in a folder

+
getNodes(\OCP\Files\Folder $folder, integer $subDepth) : array
+
+ inherited
+ + +
+
+

If we can't find anything in the current folder, we throw an exception as there is no point +in doing any more work, but if we're looking at a sub-folder, we return an empty array so +that it can be simply ignored

+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$folder

+ \OCP\Files\Folder

+
+
+

$subDepth

+ integer

+
+ +

Response

+ array

+
+
+ +
+ +
+

Returns the node type, either 'dir' or 'file'

+
getNodeType(\OCP\Files\Node $node) : string
+
+ inherited
+ + +
+
+

If there is a problem, we return an empty string so that the node can be ignored

+ + +
+ +

Arguments

+
+

$node

+ \OCP\Files\Node

+
+ +

Response

+ string

+
+
+ +
+ +
+

Returns the node matching the given ID

+
getResourceFromId(integer $nodeId) : \OCP\Files\Node|null
+
+ inherited
+ + +
+
+
+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$nodeId

+ integer

ID of the resource to locate

+
+ +

Response

+ \OCP\Files\Node|null

+
+
+ +
+ +
+

Checks if we've collected enough pictures to be able to build the view

+
haveEnoughPictures(integer $albumImageCounter, integer $subDepth) : boolean
+
+
+ + +
+
+

An album is full when we find max 4 pictures at the same level

+ + +
+ +

Arguments

+
+

$albumImageCounter

+ integer

+
+
+

$subDepth

+ integer

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Determines if we can consider the node mounted locally or if it's been authorised to be +scanned

+
isAllowed(\OCP\Files\Node $node) : boolean
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$node

+ \OCP\Files\Node

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Determines if the files are hosted locally (shared or not) and can be used by the preview +system

+
isAllowedAndAvailable(\OCP\Files\Node $node) : boolean
+
+ inherited
+ + +
+
+

isMounted() doesn't include externally hosted shares, so we need to exclude those from the +non-mounted nodes

+ + +
+ +

Arguments

+
+

$node

+ \OCP\Files\Node

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Determines if the node is available, as in readable

+
isAvailable(\OCP\Files\Node $node) : boolean
+
+ inherited
+ + +
+
+
+ + + + + + +
+ todo + + +

Test to see by how much using file_exists slows things down

+
+ +

Arguments

+
+

$node

+ \OCP\Files\Node

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Determines if the node is a share which is hosted externally

+
isExternalShare(\OCP\Files\Node $node) : boolean
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$node

+ \OCP\Files\Node

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Determines if the user has allowed the use of external shares

+
isExternalShareAllowed() : boolean
+
+ inherited
+ + +
+
+
+ + + + + + +
+ + +
+ + +

Response

+ boolean

+
+
+ +
+ +
+

Returns true if the file is of a supported media type and adds it to the array of items to +return

+
isPreviewAvailable(\OCP\Files\File $file) : boolean
+
+
+ + +
+
+
+ + + + + + +
+ todo + + +

We could potentially check if the file is readable ($file->stat() maybe) in order to +only return valid files, but this may slow down operations

+
+ +

Arguments

+
+

$file

+ \OCP\Files\File

the file to test

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Determines if we've reached the root folder

+
isRootFolder(\OCP\Files\Folder $folder, integer $level) : boolean
+
+ inherited
+ + +
+
+
+ + +
+ +

Arguments

+
+

$folder

+ \OCP\Files\Folder

+
+
+

$level

+ integer

+
+ +

Response

+ boolean

+
+
+ +
+ +
+

Logs the error and raises a "Forbidden" type exception

+
logAndThrowForbidden(string $message) 
+
+ inherited
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$message

+ string

+
+ +
+
+ +
+ +
+

Logs the error and raises a "Not found" type exception

+
logAndThrowNotFound(string $message) 
+
+ inherited
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$message

+ string

+
+ +
+
+ +
+ +
+

Throws an exception if this problem occurs in the current folder, otherwise just ignores the +sub-folder

+
recoverFromGetNodesError(integer $subDepth, \Exception $exception) : array
+
+ inherited
+ + +
+
+
+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$subDepth

+ integer

+
+
+

$exception

+ \Exception

+
+ +

Response

+ array

+
+
+ +
+ +
+

Look for media files and folders in the given folder

+
searchFolder(\OCP\Files\Folder $folder, integer $subDepth) : integer
+
+
+ + +
+
+
+ + +
+ +

Arguments

+
+

$folder

+ \OCP\Files\Folder

+
+
+

$subDepth

+ integer

+
+ +

Response

+ integer

+
+
+ +
+ +
+

Looks for pictures in sub-folders

+
searchSubFolders( $subFolders, integer $subDepth, integer $albumImageCounter) : integer
+
+
+ + +
+
+

If we're at level 0, we need to look for pictures in sub-folders no matter what +If we're at deeper levels, we only need to go further if we haven't managed to find one +picture in the current folder

+ + +
+ +

Arguments

+
+

$subFolders

+

+
+
+

$subDepth

+ integer

+
+
+

$albumImageCounter

+ integer

+
+ +

Response

+ integer

+
+
+ +
+ + +

Properties

+ +
+

images

+
images : null|\OCA\Gallery\Service\array<string,string|\OCA\Gallery\Service\int>
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ null|\OCA\Gallery\Service\array +
+
+
+ +
+

supportedMediaTypes

+
supportedMediaTypes : array<mixed,string>
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ array<mixed,string> +
+
+
+ +
+

virtualRootLevel

+
virtualRootLevel : integer
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ integer +
+
+
+ +
+

features

+
features : array<mixed,string>
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ array<mixed,string> +
+
+
+ +
+

appName

+
appName : string
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ string +
+
+
+ +
+

environment

+
environment : \OCA\Gallery\Environment\Environment
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Environment\Environment +
+
+
+ +
+

logger

+
logger : \OCP\ILogger
+
+ inherited
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\ILogger +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Service.Service.html b/build/documentation/api/classes/OCA.Gallery.Service.Service.html new file mode 100644 index 00000000..43dce8cd --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Service.Service.html @@ -0,0 +1,449 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Service\Service + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

Service

+ + +

Contains methods which all services will need

+
+
+ +
+ + + + + +
+ package + + +

OCA\Gallery\Service

+
+ +

Methods

+ +
+

Constructor

+
__construct(string $appName, \OCA\Gallery\Environment\Environment $environment, \OCP\ILogger $logger) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$appName

+ string

+
+ +
+

$logger

+ \OCP\ILogger

+
+ +
+
+ +
+ +
+

Returns the node matching the given ID

+
getResourceFromId(integer $nodeId) : \OCP\Files\Node|null
+
+
+ + +
+
+
+ + + + + + +
+ throws + + + +
+ +

Arguments

+
+

$nodeId

+ integer

ID of the resource to locate

+
+ +

Response

+ \OCP\Files\Node|null

+
+
+ +
+ +
+

Logs the error and raises a "Forbidden" type exception

+
logAndThrowForbidden(string $message) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$message

+ string

+
+ +
+
+ +
+ +
+

Logs the error and raises a "Not found" type exception

+
logAndThrowNotFound(string $message) 
+
+
+ + +
+
+
+ + + + + + + + + + +
+ throws + + + +
+ + +
+ +

Arguments

+
+

$message

+ string

+
+ +
+
+ +
+ + +

Properties

+ +
+

appName

+
appName : string
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ string +
+
+
+ +
+

environment

+
environment : \OCA\Gallery\Environment\Environment
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCA\Gallery\Environment\Environment +
+
+
+ +
+

logger

+
logger : \OCP\ILogger
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ \OCP\ILogger +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Service.ServiceException.html b/build/documentation/api/classes/OCA.Gallery.Service.ServiceException.html new file mode 100644 index 00000000..f041b932 --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Service.ServiceException.html @@ -0,0 +1,229 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Service\ServiceException + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

ServiceException

+ + Extends \Exception + +

Thrown when the service cannot reply to a request

+
+
+ +
+ + + + + +
+ package + + +

Default

+
+ +

Methods

+ +
+

Constructor

+
__construct(string $msg) 
+
+
+ + +
+
+
+ + + + + + +
+ + +
+ +

Arguments

+
+

$msg

+ string

the message contained in the exception

+
+ +
+
+ +
+ + +
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/classes/OCA.Gallery.Service.ThumbnailService.html b/build/documentation/api/classes/OCA.Gallery.Service.ThumbnailService.html new file mode 100644 index 00000000..7b275ef7 --- /dev/null +++ b/build/documentation/api/classes/OCA.Gallery.Service.ThumbnailService.html @@ -0,0 +1,286 @@ + + + + + + Gallery PHP code documentation » \OCA\Gallery\Service\ThumbnailService + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+
+ + +
+
+ + + + +
+ + + + +
+ +
+
+

ThumbnailService

+ + +

Deals with any thumbnail specific requests

+
+
+ +
+ + + + + +
+ package + + +

OCA\Gallery\Service

+
+ +

Methods

+ +
+

Returns thumbnail specs

+
getThumbnailSpecs(boolean $square, double $scale) : \OCA\Gallery\Service\array<int|double|\OCA\Gallery\Service\boolean>
+
+
+ + +
+
+
    +
  • Album thumbnails need to be 200x200 and some will be resized by the +browser to 200x100 or 100x100. +
      +
    • Standard thumbnails are 400x200.
    • +
  • +
+ + +
+ +

Arguments

+
+

$square

+ boolean

+
+
+

$scale

+ double

+
+ +

Response

+ \OCA\Gallery\Service\array

+
+
+ +
+ + +

Properties

+ +
+

animatedPreview

+
animatedPreview : boolean
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ boolean +
+
+
+ +
+

base64Encode

+
base64Encode : boolean
+
+
+
+
+
+ + + + + + +
+ var + + +
+ +

Type(s)

+ boolean +
+
+
+
+
+ + +
+
+ +
+ + + + diff --git a/build/documentation/api/css/bootstrap-responsive.css b/build/documentation/api/css/bootstrap-responsive.css new file mode 100644 index 00000000..4b032cdb --- /dev/null +++ b/build/documentation/api/css/bootstrap-responsive.css @@ -0,0 +1,567 @@ +/*! + * Bootstrap Responsive v2.0.0 + * + * 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. + */ +.hidden { + display: none; + visibility: hidden; +} +@media (max-width: 480px) { + .nav-collapse { + -webkit-transform: translate3d(0, 0, 0); + } + .page-header h1 small { + display: block; + line-height: 18px; + } + input[class*="span"], + select[class*="span"], + textarea[class*="span"], + .uneditable-input { + display: block; + width: 100%; + height: 28px; + /* Make inputs at least the height of their button counterpart */ + + /* Makes inputs behave like true block-level elements */ + + -webkit-box-sizing: border-box; + /* Older Webkit */ + + -moz-box-sizing: border-box; + /* Older FF */ + + -ms-box-sizing: border-box; + /* IE8 */ + + box-sizing: border-box; + /* CSS3 spec*/ + + } + .input-prepend input[class*="span"], .input-append input[class*="span"] { + width: auto; + } + input[type="checkbox"], input[type="radio"] { + border: 1px solid #ccc; + } + .form-horizontal .control-group > 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-left: 10px; + padding-right: 10px; + } + .modal { + position: absolute; + top: 10px; + left: 10px; + right: 10px; + width: auto; + margin: 0; + } + .modal.fade.in { + top: auto; + } + .modal-header .close { + padding: 10px; + margin: -10px; + } + .carousel-caption { + position: static; + } +} +@media (max-width: 768px) { + .container { + width: auto; + padding: 0 20px; + } + .row-fluid { + width: 100%; + } + .row { + margin-left: 0; + } + .row > [class*="span"], .row-fluid > [class*="span"] { + float: none; + display: block; + width: auto; + margin: 0; + } +} +@media (min-width: 768px) and (max-width: 980px) { + .row { + margin-left: -20px; + *zoom: 1; + } + .row:before, .row:after { + display: table; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + margin-left: 20px; + } + .span1 { + width: 42px; + } + .span2 { + width: 104px; + } + .span3 { + width: 166px; + } + .span4 { + width: 228px; + } + .span5 { + width: 290px; + } + .span6 { + width: 352px; + } + .span7 { + width: 414px; + } + .span8 { + width: 476px; + } + .span9 { + width: 538px; + } + .span10 { + width: 600px; + } + .span11 { + width: 662px; + } + .span12, .container { + width: 724px; + } + .offset1 { + margin-left: 82px; + } + .offset2 { + margin-left: 144px; + } + .offset3 { + margin-left: 206px; + } + .offset4 { + margin-left: 268px; + } + .offset5 { + margin-left: 330px; + } + .offset6 { + margin-left: 392px; + } + .offset7 { + margin-left: 454px; + } + .offset8 { + margin-left: 516px; + } + .offset9 { + margin-left: 578px; + } + .offset10 { + margin-left: 640px; + } + .offset11 { + margin-left: 702px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid > [class*="span"] { + float: left; + margin-left: 2.762430939%; + } + .row-fluid > [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .span1 { + width: 5.801104972%; + } + .row-fluid .span2 { + width: 14.364640883%; + } + .row-fluid .span3 { + width: 22.928176794%; + } + .row-fluid .span4 { + width: 31.491712705%; + } + .row-fluid .span5 { + width: 40.055248616%; + } + .row-fluid .span6 { + width: 48.618784527%; + } + .row-fluid .span7 { + width: 57.182320438000005%; + } + .row-fluid .span8 { + width: 65.74585634900001%; + } + .row-fluid .span9 { + width: 74.30939226%; + } + .row-fluid .span10 { + width: 82.87292817100001%; + } + .row-fluid .span11 { + width: 91.436464082%; + } + .row-fluid .span12 { + width: 99.999999993%; + } + input.span1, textarea.span1, .uneditable-input.span1 { + width: 32px; + } + input.span2, textarea.span2, .uneditable-input.span2 { + width: 94px; + } + input.span3, textarea.span3, .uneditable-input.span3 { + width: 156px; + } + input.span4, textarea.span4, .uneditable-input.span4 { + width: 218px; + } + input.span5, textarea.span5, .uneditable-input.span5 { + width: 280px; + } + input.span6, textarea.span6, .uneditable-input.span6 { + width: 342px; + } + input.span7, textarea.span7, .uneditable-input.span7 { + width: 404px; + } + input.span8, textarea.span8, .uneditable-input.span8 { + width: 466px; + } + input.span9, textarea.span9, .uneditable-input.span9 { + width: 528px; + } + input.span10, textarea.span10, .uneditable-input.span10 { + width: 590px; + } + input.span11, textarea.span11, .uneditable-input.span11 { + width: 652px; + } + input.span12, textarea.span12, .uneditable-input.span12 { + width: 714px; + } +} +@media (max-width: 980px) { + body { + padding-top: 0; + } + .navbar-fixed-top { + position: static; + margin-bottom: 18px; + } + .navbar-fixed-top .navbar-inner { + padding: 5px; + } + .navbar .container { + width: auto; + padding: 0; + } + .navbar .brand { + padding-left: 10px; + padding-right: 10px; + margin: 0 0 0 -5px; + } + .navbar .nav-collapse { + clear: left; + } + .navbar .nav { + float: none; + margin: 0 0 9px; + } + .navbar .nav > li { + float: none; + } + .navbar .nav > li > a { + margin-bottom: 2px; + } + .navbar .nav > .divider-vertical { + display: none; + } + .navbar .nav > li > a, .navbar .dropdown-menu a { + padding: 6px 15px; + font-weight: bold; + color: #999999; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + } + .navbar .dropdown-menu li + li a { + margin-bottom: 2px; + } + .navbar .nav > li > a:hover, .navbar .dropdown-menu a:hover { + background-color: #222222; + } + .navbar .dropdown-menu { + position: static; + top: auto; + left: auto; + float: none; + display: block; + max-width: none; + margin: 0 15px; + padding: 0; + background-color: transparent; + border: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + } + .navbar .dropdown-menu:before, .navbar .dropdown-menu:after { + display: none; + } + .navbar .dropdown-menu .divider { + display: none; + } + .navbar-form, .navbar-search { + float: none; + padding: 9px 15px; + margin: 9px 0; + border-top: 1px solid #222222; + border-bottom: 1px solid #222222; + -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 .nav.pull-right { + float: none; + margin-left: 0; + } + .navbar-static .navbar-inner { + padding-left: 10px; + padding-right: 10px; + } + .btn-navbar { + display: block; + } + .nav-collapse { + overflow: hidden; + height: 0; + } +} +@media (min-width: 980px) { + .nav-collapse.collapse { + height: auto !important; + } +} +@media (min-width: 1200px) { + .row { + margin-left: -30px; + *zoom: 1; + } + .row:before, .row:after { + display: table; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + margin-left: 30px; + } + .span1 { + width: 70px; + } + .span2 { + width: 170px; + } + .span3 { + width: 270px; + } + .span4 { + width: 370px; + } + .span5 { + width: 470px; + } + .span6 { + width: 570px; + } + .span7 { + width: 670px; + } + .span8 { + width: 770px; + } + .span9 { + width: 870px; + } + .span10 { + width: 970px; + } + .span11 { + width: 1070px; + } + .span12, .container { + width: 1170px; + } + .offset1 { + margin-left: 130px; + } + .offset2 { + margin-left: 230px; + } + .offset3 { + margin-left: 330px; + } + .offset4 { + margin-left: 430px; + } + .offset5 { + margin-left: 530px; + } + .offset6 { + margin-left: 630px; + } + .offset7 { + margin-left: 730px; + } + .offset8 { + margin-left: 830px; + } + .offset9 { + margin-left: 930px; + } + .offset10 { + margin-left: 1030px; + } + .offset11 { + margin-left: 1130px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, .row-fluid:after { + display: table; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid > [class*="span"] { + float: left; + margin-left: 2.564102564%; + } + .row-fluid > [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .span1 { + width: 5.982905983%; + } + .row-fluid .span2 { + width: 14.529914530000001%; + } + .row-fluid .span3 { + width: 23.076923077%; + } + .row-fluid .span4 { + width: 31.623931624%; + } + .row-fluid .span5 { + width: 40.170940171000005%; + } + .row-fluid .span6 { + width: 48.717948718%; + } + .row-fluid .span7 { + width: 57.264957265%; + } + .row-fluid .span8 { + width: 65.81196581200001%; + } + .row-fluid .span9 { + width: 74.358974359%; + } + .row-fluid .span10 { + width: 82.905982906%; + } + .row-fluid .span11 { + width: 91.45299145300001%; + } + .row-fluid .span12 { + width: 100%; + } + input.span1, textarea.span1, .uneditable-input.span1 { + width: 60px; + } + input.span2, textarea.span2, .uneditable-input.span2 { + width: 160px; + } + input.span3, textarea.span3, .uneditable-input.span3 { + width: 260px; + } + input.span4, textarea.span4, .uneditable-input.span4 { + width: 360px; + } + input.span5, textarea.span5, .uneditable-input.span5 { + width: 460px; + } + input.span6, textarea.span6, .uneditable-input.span6 { + width: 560px; + } + input.span7, textarea.span7, .uneditable-input.span7 { + width: 660px; + } + input.span8, textarea.span8, .uneditable-input.span8 { + width: 760px; + } + input.span9, textarea.span9, .uneditable-input.span9 { + width: 860px; + } + input.span10, textarea.span10, .uneditable-input.span10 { + width: 960px; + } + input.span11, textarea.span11, .uneditable-input.span11 { + width: 1060px; + } + input.span12, textarea.span12, .uneditable-input.span12 { + width: 1160px; + } + .thumbnails { + margin-left: -30px; + } + .thumbnails > li { + margin-left: 30px; + } +} diff --git a/build/documentation/api/css/bootstrap-responsive.min.css b/build/documentation/api/css/bootstrap-responsive.min.css new file mode 100644 index 00000000..bc3f2ab7 --- /dev/null +++ b/build/documentation/api/css/bootstrap-responsive.min.css @@ -0,0 +1,3 @@ + +.hidden{display:none;visibility:hidden;} +@media (max-width:480px){.nav-collapse{-webkit-transform:translate3d(0, 0, 0);} .page-header h1 small{display:block;line-height:18px;} input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;} .input-prepend input[class*="span"],.input-append input[class*="span"]{width:auto;} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc;} .form-horizontal .control-group>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-left:10px;padding-right:10px;} .modal{position:absolute;top:10px;left:10px;right:10px;width:auto;margin:0;}.modal.fade.in{top:auto;} .modal-header .close{padding:10px;margin:-10px;} .carousel-caption{position:static;}}@media (max-width:768px){.container{width:auto;padding:0 20px;} .row-fluid{width:100%;} .row{margin-left:0;} .row>[class*="span"],.row-fluid>[class*="span"]{float:none;display:block;width:auto;margin:0;}}@media (min-width:768px) and (max-width:980px){.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:20px;} .span1{width:42px;} .span2{width:104px;} .span3{width:166px;} .span4{width:228px;} .span5{width:290px;} .span6{width:352px;} .span7{width:414px;} .span8{width:476px;} .span9{width:538px;} .span10{width:600px;} .span11{width:662px;} .span12,.container{width:724px;} .offset1{margin-left:82px;} .offset2{margin-left:144px;} .offset3{margin-left:206px;} .offset4{margin-left:268px;} .offset5{margin-left:330px;} .offset6{margin-left:392px;} .offset7{margin-left:454px;} .offset8{margin-left:516px;} .offset9{margin-left:578px;} .offset10{margin-left:640px;} .offset11{margin-left:702px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.762430939%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid .span1{width:5.801104972%;} .row-fluid .span2{width:14.364640883%;} .row-fluid .span3{width:22.928176794%;} .row-fluid .span4{width:31.491712705%;} .row-fluid .span5{width:40.055248616%;} .row-fluid .span6{width:48.618784527%;} .row-fluid .span7{width:57.182320438000005%;} .row-fluid .span8{width:65.74585634900001%;} .row-fluid .span9{width:74.30939226%;} .row-fluid .span10{width:82.87292817100001%;} .row-fluid .span11{width:91.436464082%;} .row-fluid .span12{width:99.999999993%;} input.span1,textarea.span1,.uneditable-input.span1{width:32px;} input.span2,textarea.span2,.uneditable-input.span2{width:94px;} input.span3,textarea.span3,.uneditable-input.span3{width:156px;} input.span4,textarea.span4,.uneditable-input.span4{width:218px;} input.span5,textarea.span5,.uneditable-input.span5{width:280px;} input.span6,textarea.span6,.uneditable-input.span6{width:342px;} input.span7,textarea.span7,.uneditable-input.span7{width:404px;} input.span8,textarea.span8,.uneditable-input.span8{width:466px;} input.span9,textarea.span9,.uneditable-input.span9{width:528px;} input.span10,textarea.span10,.uneditable-input.span10{width:590px;} input.span11,textarea.span11,.uneditable-input.span11{width:652px;} input.span12,textarea.span12,.uneditable-input.span12{width:714px;}}@media (max-width:980px){body{padding-top:0;} .navbar-fixed-top{position:static;margin-bottom:18px;} .navbar-fixed-top .navbar-inner{padding:5px;} .navbar .container{width:auto;padding:0;} .navbar .brand{padding-left:10px;padding-right:10px;margin:0 0 0 -5px;} .navbar .nav-collapse{clear:left;} .navbar .nav{float:none;margin:0 0 9px;} .navbar .nav>li{float:none;} .navbar .nav>li>a{margin-bottom:2px;} .navbar .nav>.divider-vertical{display:none;} .navbar .nav>li>a,.navbar .dropdown-menu a{padding:6px 15px;font-weight:bold;color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} .navbar .dropdown-menu li+li a{margin-bottom:2px;} .navbar .nav>li>a:hover,.navbar .dropdown-menu a:hover{background-color:#222222;} .navbar .dropdown-menu{position:static;top:auto;left:auto;float:none;display:block;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} .navbar .dropdown-menu:before,.navbar .dropdown-menu:after{display:none;} .navbar .dropdown-menu .divider{display:none;} .navbar-form,.navbar-search{float:none;padding:9px 15px;margin:9px 0;border-top:1px solid #222222;border-bottom:1px solid #222222;-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 .nav.pull-right{float:none;margin-left:0;} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px;} .btn-navbar{display:block;} .nav-collapse{overflow:hidden;height:0;}}@media (min-width:980px){.nav-collapse.collapse{height:auto !important;}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:30px;} .span1{width:70px;} .span2{width:170px;} .span3{width:270px;} .span4{width:370px;} .span5{width:470px;} .span6{width:570px;} .span7{width:670px;} .span8{width:770px;} .span9{width:870px;} .span10{width:970px;} .span11{width:1070px;} .span12,.container{width:1170px;} .offset1{margin-left:130px;} .offset2{margin-left:230px;} .offset3{margin-left:330px;} .offset4{margin-left:430px;} .offset5{margin-left:530px;} .offset6{margin-left:630px;} .offset7{margin-left:730px;} .offset8{margin-left:830px;} .offset9{margin-left:930px;} .offset10{margin-left:1030px;} .offset11{margin-left:1130px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.564102564%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid .span1{width:5.982905983%;} .row-fluid .span2{width:14.529914530000001%;} .row-fluid .span3{width:23.076923077%;} .row-fluid .span4{width:31.623931624%;} .row-fluid .span5{width:40.170940171000005%;} .row-fluid .span6{width:48.717948718%;} .row-fluid .span7{width:57.264957265%;} .row-fluid .span8{width:65.81196581200001%;} .row-fluid .span9{width:74.358974359%;} .row-fluid .span10{width:82.905982906%;} .row-fluid .span11{width:91.45299145300001%;} .row-fluid .span12{width:100%;} input.span1,textarea.span1,.uneditable-input.span1{width:60px;} input.span2,textarea.span2,.uneditable-input.span2{width:160px;} input.span3,textarea.span3,.uneditable-input.span3{width:260px;} input.span4,textarea.span4,.uneditable-input.span4{width:360px;} input.span5,textarea.span5,.uneditable-input.span5{width:460px;} input.span6,textarea.span6,.uneditable-input.span6{width:560px;} input.span7,textarea.span7,.uneditable-input.span7{width:660px;} input.span8,textarea.span8,.uneditable-input.span8{width:760px;} input.span9,textarea.span9,.uneditable-input.span9{width:860px;} input.span10,textarea.span10,.uneditable-input.span10{width:960px;} input.span11,textarea.span11,.uneditable-input.span11{width:1060px;} input.span12,textarea.span12,.uneditable-input.span12{width:1160px;} .thumbnails{margin-left:-30px;} .thumbnails>li{margin-left:30px;}} diff --git a/build/documentation/api/css/bootstrap.css b/build/documentation/api/css/bootstrap.css new file mode 100644 index 00000000..563050c0 --- /dev/null +++ b/build/documentation/api/css/bootstrap.css @@ -0,0 +1,3370 @@ +/*! + * Bootstrap v2.0.0 + * + * 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. + */ +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; + 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 { + max-width: 100%; + height: auto; + border: 0; + -ms-interpolation-mode: bicubic; +} +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, +input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} +input[type="search"] { + -webkit-appearance: textfield; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} +textarea { + overflow: auto; + vertical-align: top; +} +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + line-height: 18px; + color: #333333; + background-color: #ffffff; +} +a { + color: #0088cc; + text-decoration: none; +} +a:hover { + color: #005580; + text-decoration: underline; +} +.row { + margin-left: -20px; + *zoom: 1; +} +.row:before, .row:after { + display: table; + content: ""; +} +.row:after { + clear: both; +} +[class*="span"] { + float: left; + margin-left: 20px; +} +.span1 { + width: 60px; +} +.span2 { + width: 140px; +} +.span3 { + width: 220px; +} +.span4 { + width: 300px; +} +.span5 { + width: 380px; +} +.span6 { + width: 460px; +} +.span7 { + width: 540px; +} +.span8 { + width: 620px; +} +.span9 { + width: 700px; +} +.span10 { + width: 780px; +} +.span11 { + width: 860px; +} +.span12, .container { + width: 940px; +} +.offset1 { + margin-left: 100px; +} +.offset2 { + margin-left: 180px; +} +.offset3 { + margin-left: 260px; +} +.offset4 { + margin-left: 340px; +} +.offset5 { + margin-left: 420px; +} +.offset6 { + margin-left: 500px; +} +.offset7 { + margin-left: 580px; +} +.offset8 { + margin-left: 660px; +} +.offset9 { + margin-left: 740px; +} +.offset10 { + margin-left: 820px; +} +.offset11 { + margin-left: 900px; +} +.row-fluid { + width: 100%; + *zoom: 1; +} +.row-fluid:before, .row-fluid:after { + display: table; + content: ""; +} +.row-fluid:after { + clear: both; +} +.row-fluid > [class*="span"] { + float: left; + margin-left: 2.127659574%; +} +.row-fluid > [class*="span"]:first-child { + margin-left: 0; +} +.row-fluid .span1 { + width: 6.382978723%; +} +.row-fluid .span2 { + width: 14.89361702%; +} +.row-fluid .span3 { + width: 23.404255317%; +} +.row-fluid .span4 { + width: 31.914893614%; +} +.row-fluid .span5 { + width: 40.425531911%; +} +.row-fluid .span6 { + width: 48.93617020799999%; +} +.row-fluid .span7 { + width: 57.446808505%; +} +.row-fluid .span8 { + width: 65.95744680199999%; +} +.row-fluid .span9 { + width: 74.468085099%; +} +.row-fluid .span10 { + width: 82.97872339599999%; +} +.row-fluid .span11 { + width: 91.489361693%; +} +.row-fluid .span12 { + width: 99.99999998999999%; +} +.container { + width: 940px; + margin-left: auto; + margin-right: auto; + *zoom: 1; +} +.container:before, .container:after { + display: table; + content: ""; +} +.container:after { + clear: both; +} +.container-fluid { + padding-left: 20px; + padding-right: 20px; + *zoom: 1; +} +.container-fluid:before, .container-fluid:after { + display: table; + content: ""; +} +.container-fluid:after { + clear: both; +} +p { + margin: 0 0 9px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + line-height: 18px; +} +p small { + font-size: 11px; + color: #999999; +} +.lead { + margin-bottom: 18px; + font-size: 20px; + font-weight: 200; + line-height: 27px; +} +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; + font-weight: bold; + color: #333333; + text-rendering: optimizelegibility; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + color: #999999; +} +h1 { + font-size: 30px; + line-height: 36px; +} +h1 small { + font-size: 18px; +} +h2 { + font-size: 24px; + line-height: 36px; +} +h2 small { + font-size: 18px; +} +h3 { + line-height: 27px; + font-size: 18px; +} +h3 small { + font-size: 14px; +} +h4, h5, h6 { + line-height: 18px; +} +h4 { + font-size: 14px; +} +h4 small { + font-size: 12px; +} +h5 { + font-size: 12px; +} +h6 { + font-size: 11px; + color: #999999; + text-transform: uppercase; +} +.page-header { + padding-bottom: 17px; + margin: 18px 0; + border-bottom: 1px solid #eeeeee; +} +.page-header h1 { + line-height: 1; +} +ul, ol { + padding: 0; + margin: 0 0 9px 25px; +} +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} +ul { + list-style: disc; +} +ol { + list-style: decimal; +} +li { + line-height: 18px; +} +ul.unstyled { + margin-left: 0; + list-style: none; +} +dl { + margin-bottom: 18px; +} +dt, dd { + line-height: 18px; +} +dt { + font-weight: bold; +} +dd { + margin-left: 9px; +} +hr { + margin: 18px 0; + border: 0; + border-top: 1px solid #e5e5e5; + border-bottom: 1px solid #ffffff; +} +strong { + font-weight: bold; +} +em { + font-style: italic; +} +.muted { + color: #999999; +} +abbr { + font-size: 90%; + text-transform: uppercase; + border-bottom: 1px dotted #ddd; + cursor: help; +} +blockquote { + padding: 0 0 0 15px; + margin: 0 0 18px; + border-left: 5px solid #eeeeee; +} +blockquote p { + margin-bottom: 0; + font-size: 16px; + font-weight: 300; + line-height: 22.5px; +} +blockquote small { + display: block; + line-height: 18px; + color: #999999; +} +blockquote small:before { + content: '\2014 \00A0'; +} +blockquote.pull-right { + float: right; + padding-left: 0; + padding-right: 15px; + border-left: 0; + border-right: 5px solid #eeeeee; +} +blockquote.pull-right p, blockquote.pull-right small { + text-align: right; +} +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} +address { + display: block; + margin-bottom: 18px; + line-height: 18px; + font-style: normal; +} +small { + font-size: 100%; +} +cite { + font-style: normal; +} +code, pre { + padding: 0 3px 2px; + font-family: Menlo, Monaco, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +code { + padding: 3px 4px; + color: #d14; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} +pre { + display: block; + padding: 8.5px; + margin: 0 0 9px; + font-size: 12px; + line-height: 18px; + 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; + white-space: pre; + white-space: pre-wrap; + word-break: break-all; +} +pre.prettyprint { + margin-bottom: 18px; +} +pre code { + padding: 0; + background-color: transparent; +} +form { + margin: 0 0 18px; +} +fieldset { + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 27px; + font-size: 19.5px; + line-height: 36px; + color: #333333; + border: 0; + border-bottom: 1px solid #eee; +} +label, +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 18px; +} +label { + display: block; + margin-bottom: 5px; + color: #333333; +} +input, +textarea, +select, +.uneditable-input { + display: inline-block; + width: 210px; + height: 18px; + padding: 4px; + margin-bottom: 9px; + font-size: 13px; + line-height: 18px; + color: #555555; + border: 1px solid #ccc; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.uneditable-textarea { + width: auto; + height: auto; +} +label input, label textarea, label select { + display: block; +} +input[type="image"], input[type="checkbox"], input[type="radio"] { + width: auto; + height: auto; + padding: 0; + margin: 3px 0; + *margin-top: 0; + /* IE7 */ + + line-height: normal; + border: 0; + cursor: pointer; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +input[type="file"] { + padding: initial; + line-height: initial; + border: initial; + background-color: #ffffff; + background-color: initial; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +input[type="button"], input[type="reset"], input[type="submit"] { + width: auto; + height: auto; +} +select, input[type="file"] { + height: 28px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 28px; +} +select { + width: 220px; + background-color: #ffffff; +} +select[multiple], select[size] { + height: auto; +} +input[type="image"] { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +textarea { + height: auto; +} +input[type="hidden"] { + display: none; +} +.radio, .checkbox { + padding-left: 18px; +} +.radio input[type="radio"], .checkbox input[type="checkbox"] { + float: left; + margin-left: -18px; +} +.controls > .radio:first-child, .controls > .checkbox:first-child { + padding-top: 5px; +} +.radio.inline, .checkbox.inline { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; +} +.radio.inline + .radio.inline, .checkbox.inline + .checkbox.inline { + margin-left: 10px; +} +.controls > .radio.inline:first-child, .controls > .checkbox.inline:first-child { + padding-top: 0; +} +input, textarea { + -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 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -ms-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; +} +input:focus, textarea:focus { + border-color: rgba(82, 168, 236, 0.8); + -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); + outline: 0; + outline: thin dotted \9; + /* IE6-8 */ + +} +input[type="file"]:focus, input[type="checkbox"]:focus, select:focus { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.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 { + float: none; + margin-left: 0; +} +input.span1, textarea.span1, .uneditable-input.span1 { + width: 50px; +} +input.span2, textarea.span2, .uneditable-input.span2 { + width: 130px; +} +input.span3, textarea.span3, .uneditable-input.span3 { + width: 210px; +} +input.span4, textarea.span4, .uneditable-input.span4 { + width: 290px; +} +input.span5, textarea.span5, .uneditable-input.span5 { + width: 370px; +} +input.span6, textarea.span6, .uneditable-input.span6 { + width: 450px; +} +input.span7, textarea.span7, .uneditable-input.span7 { + width: 530px; +} +input.span8, textarea.span8, .uneditable-input.span8 { + width: 610px; +} +input.span9, textarea.span9, .uneditable-input.span9 { + width: 690px; +} +input.span10, textarea.span10, .uneditable-input.span10 { + width: 770px; +} +input.span11, textarea.span11, .uneditable-input.span11 { + width: 850px; +} +input.span12, textarea.span12, .uneditable-input.span12 { + width: 930px; +} +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + background-color: #f5f5f5; + border-color: #ddd; + cursor: not-allowed; +} +.control-group.warning > label, .control-group.warning .help-block, .control-group.warning .help-inline { + color: #c09853; +} +.control-group.warning input, .control-group.warning select, .control-group.warning textarea { + color: #c09853; + border-color: #c09853; +} +.control-group.warning input:focus, .control-group.warning select:focus, .control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: 0 0 6px #dbc59e; + -moz-box-shadow: 0 0 6px #dbc59e; + box-shadow: 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 > label, .control-group.error .help-block, .control-group.error .help-inline { + color: #b94a48; +} +.control-group.error input, .control-group.error select, .control-group.error textarea { + color: #b94a48; + border-color: #b94a48; +} +.control-group.error input:focus, .control-group.error select:focus, .control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: 0 0 6px #d59392; + -moz-box-shadow: 0 0 6px #d59392; + box-shadow: 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 > label, .control-group.success .help-block, .control-group.success .help-inline { + color: #468847; +} +.control-group.success input, .control-group.success select, .control-group.success textarea { + color: #468847; + border-color: #468847; +} +.control-group.success input:focus, .control-group.success select:focus, .control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: 0 0 6px #7aba7b; + -moz-box-shadow: 0 0 6px #7aba7b; + box-shadow: 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; +} +input:focus:required:invalid, textarea:focus:required:invalid, select:focus:required:invalid { + color: #b94a48; + border-color: #ee5f5b; +} +input:focus:required:invalid:focus, textarea:focus:required:invalid:focus, select:focus:required: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: 17px 20px 18px; + margin-top: 18px; + margin-bottom: 18px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; +} +.uneditable-input { + display: block; + background-color: #ffffff; + border-color: #eee; + -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); + cursor: not-allowed; +} +:-moz-placeholder { + color: #999999; +} +::-webkit-input-placeholder { + color: #999999; +} +.help-block { + margin-top: 5px; + margin-bottom: 0; + color: #999999; +} +.help-inline { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + margin-bottom: 9px; + vertical-align: middle; + padding-left: 5px; +} +.input-prepend, .input-append { + margin-bottom: 5px; + *zoom: 1; +} +.input-prepend:before, +.input-append:before, +.input-prepend:after, +.input-append:after { + display: table; + content: ""; +} +.input-prepend:after, .input-append:after { + clear: both; +} +.input-prepend input, +.input-append input, +.input-prepend .uneditable-input, +.input-append .uneditable-input { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} +.input-prepend input:focus, +.input-append input:focus, +.input-prepend .uneditable-input:focus, +.input-append .uneditable-input:focus { + position: relative; + z-index: 2; +} +.input-prepend .uneditable-input, .input-append .uneditable-input { + border-left-color: #ccc; +} +.input-prepend .add-on, .input-append .add-on { + float: left; + display: block; + width: auto; + min-width: 16px; + height: 18px; + margin-right: -1px; + padding: 4px 5px; + font-weight: normal; + line-height: 18px; + color: #999999; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #f5f5f5; + border: 1px solid #ccc; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} +.input-prepend .active, .input-append .active { + background-color: #a9dba9; + border-color: #46a546; +} +.input-prepend .add-on { + *margin-top: 1px; + /* IE6-7 */ + +} +.input-append input, .input-append .uneditable-input { + float: left; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} +.input-append .uneditable-input { + border-right-color: #ccc; +} +.input-append .add-on { + margin-right: 0; + margin-left: -1px; + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} +.input-append input:first-child { + *margin-left: -160px; +} +.input-append input:first-child + .add-on { + *margin-left: -21px; +} +.search-query { + padding-left: 14px; + padding-right: 14px; + margin-bottom: 0; + -webkit-border-radius: 14px; + -moz-border-radius: 14px; + border-radius: 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 { + display: inline-block; + margin-bottom: 0; +} +.form-search label, +.form-inline label, +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + display: inline-block; +} +.form-search .input-append .add-on, +.form-inline .input-prepend .add-on, +.form-search .input-append .add-on, +.form-inline .input-prepend .add-on { + vertical-align: middle; +} +.control-group { + margin-bottom: 9px; +} +.form-horizontal legend + .control-group { + margin-top: 18px; + -webkit-margin-top-collapse: separate; +} +.form-horizontal .control-group { + margin-bottom: 18px; + *zoom: 1; +} +.form-horizontal .control-group:before, .form-horizontal .control-group:after { + display: table; + content: ""; +} +.form-horizontal .control-group:after { + clear: both; +} +.form-horizontal .control-group > label { + float: left; + width: 140px; + padding-top: 5px; + text-align: right; +} +.form-horizontal .controls { + margin-left: 160px; +} +.form-horizontal .form-actions { + padding-left: 160px; +} +table { + max-width: 100%; + border-collapse: collapse; + border-spacing: 0; +} +.table { + width: 100%; + margin-bottom: 18px; +} +.table th, .table td { + padding: 8px; + line-height: 18px; + text-align: left; + border-top: 1px solid #ddd; +} +.table th { + font-weight: bold; + vertical-align: bottom; +} +.table td { + vertical-align: top; +} +.table thead:first-child tr th, .table thead:first-child tr td { + border-top: 0; +} +.table tbody + tbody { + border-top: 2px solid #ddd; +} +.table-condensed th, .table-condensed td { + padding: 4px 5px; +} +.table-bordered { + border: 1px solid #ddd; + border-collapse: separate; + *border-collapse: collapsed; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.table-bordered th + th, +.table-bordered td + td, +.table-bordered th + td, +.table-bordered td + th { + border-left: 1px solid #ddd; +} +.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 { + -webkit-border-radius: 4px 0 0 0; + -moz-border-radius: 4px 0 0 0; + border-radius: 4px 0 0 0; +} +.table-bordered thead:first-child tr:first-child th:last-child, .table-bordered tbody:first-child tr:first-child td:last-child { + -webkit-border-radius: 0 4px 0 0; + -moz-border-radius: 0 4px 0 0; + border-radius: 0 4px 0 0; +} +.table-bordered thead:last-child tr:last-child th:first-child, .table-bordered tbody:last-child tr:last-child td:first-child { + -webkit-border-radius: 0 0 0 4px; + -moz-border-radius: 0 0 0 4px; + border-radius: 0 0 0 4px; +} +.table-bordered thead:last-child tr:last-child th:last-child, .table-bordered tbody:last-child tr:last-child td:last-child { + -webkit-border-radius: 0 0 4px 0; + -moz-border-radius: 0 0 4px 0; + border-radius: 0 0 4px 0; +} +.table-striped tbody tr:nth-child(odd) td, .table-striped tbody tr:nth-child(odd) th { + background-color: #f9f9f9; +} +table .span1 { + float: none; + width: 44px; + margin-left: 0; +} +table .span2 { + float: none; + width: 124px; + margin-left: 0; +} +table .span3 { + float: none; + width: 204px; + margin-left: 0; +} +table .span4 { + float: none; + width: 284px; + margin-left: 0; +} +table .span5 { + float: none; + width: 364px; + margin-left: 0; +} +table .span6 { + float: none; + width: 444px; + margin-left: 0; +} +table .span7 { + float: none; + width: 524px; + margin-left: 0; +} +table .span8 { + float: none; + width: 604px; + margin-left: 0; +} +table .span9 { + float: none; + width: 684px; + margin-left: 0; +} +table .span10 { + float: none; + width: 764px; + margin-left: 0; +} +table .span11 { + float: none; + width: 844px; + margin-left: 0; +} +table .span12 { + float: none; + width: 924px; + margin-left: 0; +} +[class^="icon-"] { + display: inline-block; + width: 14px; + height: 14px; + vertical-align: text-top; + background-image: url(../img/glyphicons-halflings.png); + background-position: 14px 14px; + background-repeat: no-repeat; + *margin-right: .3em; +} +[class^="icon-"]:last-child { + *margin-left: 0; +} +.icon-white { + background-image: url(../img/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 { + 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 { + background-position: -384px -120px; +} +.icon-folder-open { + background-position: -408px -120px; +} +.icon-resize-vertical { + background-position: -432px -119px; +} +.icon-resize-horizontal { + background-position: -456px -118px; +} +.dropdown { + position: relative; +} +.dropdown-toggle { + *margin-bottom: -3px; +} +.dropdown-toggle:active, .open .dropdown-toggle { + outline: 0; +} +.caret { + display: inline-block; + width: 0; + height: 0; + text-indent: -99999px; + *text-indent: 0; + vertical-align: top; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px solid #000000; + opacity: 0.3; + filter: alpha(opacity=30); + content: "\2193"; +} +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} +.dropdown:hover .caret, .open.dropdown .caret { + opacity: 1; + filter: alpha(opacity=100); +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + float: left; + display: none; + min-width: 160px; + max-width: 220px; + _width: 160px; + padding: 4px 0; + margin: 0; + list-style: none; + background-color: #ffffff; + border-color: #ccc; + border-color: rgba(0, 0, 0, 0.2); + border-style: solid; + border-width: 1px; + -webkit-border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; + -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; + *border-right-width: 2px; + *border-bottom-width: 2px; +} +.dropdown-menu.bottom-up { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} +.dropdown-menu .divider { + height: 1px; + margin: 5px 1px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; + *width: 100%; + *margin: -5px 0 5px; +} +.dropdown-menu a { + display: block; + padding: 3px 15px; + clear: both; + font-weight: normal; + line-height: 18px; + color: #555555; + white-space: nowrap; +} +.dropdown-menu li > a:hover, .dropdown-menu .active > a, .dropdown-menu .active > a:hover { + color: #ffffff; + text-decoration: none; + background-color: #0088cc; +} +.dropdown.open { + *z-index: 1000; +} +.dropdown.open .dropdown-toggle { + color: #ffffff; + background: #ccc; + background: rgba(0, 0, 0, 0.3); +} +.dropdown.open .dropdown-menu { + display: block; +} +.typeahead { + 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 #eee; + border: 1px solid rgba(0, 0, 0, 0.05); + -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); +} +.fade { + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -ms-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; + opacity: 0; +} +.fade.in { + opacity: 1; +} +.collapse { + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -ms-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; + position: relative; + overflow: hidden; + height: 0; +} +.collapse.in { + height: auto; +} +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 18px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} +.close:hover { + color: #000000; + text-decoration: none; + opacity: 0.4; + filter: alpha(opacity=40); + cursor: pointer; +} +.btn { + display: inline-block; + padding: 4px 10px 4px; + font-size: 13px; + line-height: 18px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + background-color: #fafafa; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); + background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-repeat: no-repeat; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); + border: 1px solid #ccc; + border-bottom-color: #bbb; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -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); + cursor: pointer; + *margin-left: .3em; +} +.btn:first-child { + *margin-left: 0; +} +.btn:hover { + color: #333333; + text-decoration: none; + background-color: #e6e6e6; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -ms-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} +.btn:focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn.active, .btn:active { + 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); + background-color: #e6e6e6; + background-color: #d9d9d9 \9; + color: rgba(0, 0, 0, 0.5); + outline: 0; +} +.btn.disabled, .btn[disabled] { + cursor: default; + background-image: none; + background-color: #e6e6e6; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.btn-large { + padding: 9px 14px; + font-size: 15px; + line-height: normal; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.btn-large .icon { + margin-top: 1px; +} +.btn-small { + padding: 5px 9px; + font-size: 11px; + line-height: 16px; +} +.btn-small .icon { + margin-top: -1px; +} +.btn-primary, +.btn-primary:hover, +.btn-warning, +.btn-warning:hover, +.btn-danger, +.btn-danger:hover, +.btn-success, +.btn-success:hover, +.btn-info, +.btn-info:hover { + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + color: #ffffff; +} +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active { + color: rgba(255, 255, 255, 0.75); +} +.btn-primary { + background-color: #006dcc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -ms-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(top, #0088cc, #0044cc); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0); + border-color: #0044cc #0044cc #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(enabled = false); +} +.btn-primary:hover, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + background-color: #0044cc; +} +.btn-primary:active, .btn-primary.active { + background-color: #003399 \9; +} +.btn-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -ms-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(top, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0); + 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(enabled = false); +} +.btn-warning:hover, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + background-color: #f89406; +} +.btn-warning:active, .btn-warning.active { + background-color: #c67605 \9; +} +.btn-danger { + background-color: #da4f49; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -ms-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(top, #ee5f5b, #bd362f); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0); + 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(enabled = false); +} +.btn-danger:hover, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + background-color: #bd362f; +} +.btn-danger:active, .btn-danger.active { + background-color: #942a25 \9; +} +.btn-success { + background-color: #5bb75b; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -ms-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(top, #62c462, #51a351); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0); + 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(enabled = false); +} +.btn-success:hover, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + background-color: #51a351; +} +.btn-success:active, .btn-success.active { + background-color: #408140 \9; +} +.btn-info { + background-color: #49afcd; + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -ms-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(top, #5bc0de, #2f96b4); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0); + 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(enabled = false); +} +.btn-info:hover, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + background-color: #2f96b4; +} +.btn-info:active, .btn-info.active { + background-color: #24748c \9; +} +button.btn, input[type="submit"].btn { + *padding-top: 2px; + *padding-bottom: 2px; +} +button.btn::-moz-focus-inner, input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} +button.btn.large, input[type="submit"].btn.large { + *padding-top: 7px; + *padding-bottom: 7px; +} +button.btn.small, input[type="submit"].btn.small { + *padding-top: 3px; + *padding-bottom: 3px; +} +.btn-group { + position: relative; + *zoom: 1; + *margin-left: .3em; +} +.btn-group:before, .btn-group:after { + display: table; + content: ""; +} +.btn-group:after { + clear: both; +} +.btn-group:first-child { + *margin-left: 0; +} +.btn-group + .btn-group { + margin-left: 5px; +} +.btn-toolbar { + margin-top: 9px; + margin-bottom: 9px; +} +.btn-toolbar .btn-group { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} +.btn-group .btn { + position: relative; + float: left; + margin-left: -1px; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.btn-group .btn:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; + border-top-left-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + border-bottom-left-radius: 4px; +} +.btn-group .btn:last-child, .btn-group .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; + border-bottom-right-radius: 4px; +} +.btn-group .btn.large:first-child { + margin-left: 0; + -webkit-border-top-left-radius: 6px; + -moz-border-radius-topleft: 6px; + border-top-left-radius: 6px; + -webkit-border-bottom-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + border-bottom-left-radius: 6px; +} +.btn-group .btn.large:last-child, .btn-group .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + -moz-border-radius-topright: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + -moz-border-radius-bottomright: 6px; + border-bottom-right-radius: 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 .dropdown-toggle { + padding-left: 8px; + padding-right: 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); + *padding-top: 5px; + *padding-bottom: 5px; +} +.btn-group.open { + *z-index: 1000; +} +.btn-group.open .dropdown-menu { + display: block; + margin-top: 1px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} +.btn .caret { + margin-top: 7px; + margin-left: 0; +} +.btn:hover .caret, .open.btn-group .caret { + opacity: 1; + filter: alpha(opacity=100); +} +.btn-primary .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret { + border-top-color: #ffffff; + opacity: 0.75; + filter: alpha(opacity=75); +} +.btn-small .caret { + margin-top: 4px; +} +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 18px; + 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-heading { + color: #c09853; +} +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 18px; +} +.alert-success { + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success, .alert-success .alert-heading { + color: #468847; +} +.alert-danger, .alert-error { + background-color: #f2dede; + border-color: #eed3d7; +} +.alert-danger, +.alert-error, +.alert-danger .alert-heading, +.alert-error .alert-heading { + color: #b94a48; +} +.alert-info { + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info, .alert-info .alert-heading { + 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-left: 0; + margin-bottom: 18px; + list-style: none; +} +.nav > li > a { + display: block; +} +.nav > li > a:hover { + text-decoration: none; + background-color: #eeeeee; +} +.nav-list { + padding-left: 14px; + padding-right: 14px; + margin-bottom: 0; +} +.nav-list > li > a, .nav-list .nav-header { + display: block; + padding: 3px 15px; + margin-left: -15px; + margin-right: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} +.nav-list .nav-header { + font-size: 11px; + font-weight: bold; + line-height: 18px; + color: #999999; + text-transform: uppercase; +} + +.nav-list .nav-header * { + text-transform:none; +} + +.nav-list > li + .nav-header { + margin-top: 9px; +} +.nav-list .active > a, .nav-list .active > a:hover { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} +.nav-list [class^="icon-"] { + margin-right: 2px; +} +.nav-tabs, .nav-pills { + *zoom: 1; +} +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + 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: 9px; + padding-bottom: 9px; + 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 { + border-color: #eeeeee #eeeeee #dddddd; +} +.nav-tabs > .active > a, .nav-tabs > .active > a:hover { + color: #555555; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; + cursor: default; +} +.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 { + color: #ffffff; + background-color: #0088cc; +} +.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-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} +.nav-tabs.nav-stacked > li > a:hover { + border-color: #ddd; + z-index: 2; +} +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} +.nav-tabs .dropdown-menu, .nav-pills .dropdown-menu { + margin-top: 1px; + border-width: 1px; +} +.nav-pills .dropdown-menu { + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.nav-tabs .dropdown-toggle .caret, .nav-pills .dropdown-toggle .caret { + border-top-color: #0088cc; + margin-top: 6px; +} +.nav-tabs .dropdown-toggle:hover .caret, .nav-pills .dropdown-toggle:hover .caret { + border-top-color: #005580; +} +.nav-tabs .active .dropdown-toggle .caret, .nav-pills .active .dropdown-toggle .caret { + border-top-color: #333333; +} +.nav > .dropdown.active > a:hover { + color: #000000; + cursor: pointer; +} +.nav-tabs .open .dropdown-toggle, .nav-pills .open .dropdown-toggle, .nav > .open.active > a:hover { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} +.nav .open .caret, .nav .open.active .caret, .nav .open a:hover .caret { + border-top-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} +.tabs-stacked .open > a:hover { + border-color: #999999; +} +.tabbable { + *zoom: 1; +} +.tabbable:before, .tabbable:after { + display: table; + content: ""; +} +.tabbable:after { + clear: both; +} +.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 { + border-bottom-color: transparent; + border-top-color: #ddd; +} +.tabs-below .nav-tabs .active > a, .tabs-below .nav-tabs .active > a:hover { + 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 { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} +.tabs-left .nav-tabs .active > a, .tabs-left .nav-tabs .active > a:hover { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} +.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 { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} +.tabs-right .nav-tabs .active > a, .tabs-right .nav-tabs .active > a:hover { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} +.navbar { + overflow: visible; + margin-bottom: 18px; +} +.navbar-inner { + padding-left: 20px; + padding-right: 20px; + background-color: #2c2c2c; + background-image: -moz-linear-gradient(top, #333333, #222222); + background-image: -ms-linear-gradient(top, #333333, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222)); + background-image: -webkit-linear-gradient(top, #333333, #222222); + background-image: -o-linear-gradient(top, #333333, #222222); + background-image: linear-gradient(top, #333333, #222222); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1); +} +.btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-left: 5px; + margin-right: 5px; + background-color: #2c2c2c; + background-image: -moz-linear-gradient(top, #333333, #222222); + background-image: -ms-linear-gradient(top, #333333, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222)); + background-image: -webkit-linear-gradient(top, #333333, #222222); + background-image: -o-linear-gradient(top, #333333, #222222); + background-image: linear-gradient(top, #333333, #222222); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0); + border-color: #222222 #222222 #000000; + 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(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); +} +.btn-navbar:hover, +.btn-navbar:active, +.btn-navbar.active, +.btn-navbar.disabled, +.btn-navbar[disabled] { + background-color: #222222; +} +.btn-navbar:active, .btn-navbar.active { + background-color: #080808 \9; +} +.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; +} +.nav-collapse.collapse { + height: auto; +} +.navbar .brand:hover { + text-decoration: none; +} +.navbar .brand { + float: left; + display: block; + padding: 8px 20px 12px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + line-height: 1; + color: #ffffff; +} +.navbar .navbar-text { + margin-bottom: 0; + line-height: 40px; + color: #999999; +} +.navbar .navbar-text a:hover { + color: #ffffff; + background-color: transparent; +} +.navbar .btn, .navbar .btn-group { + margin-top: 5px; +} +.navbar .btn-group .btn { + margin-top: 0; +} +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} +.navbar-form:before, .navbar-form:after { + display: table; + content: ""; +} +.navbar-form:after { + clear: both; +} +.navbar-form input, .navbar-form select { + display: inline-block; + margin-top: 5px; + margin-bottom: 0; +} +.navbar-form .radio, .navbar-form .checkbox { + margin-top: 5px; +} +.navbar-form input[type="image"], .navbar-form input[type="checkbox"], .navbar-form input[type="radio"] { + margin-top: 3px; +} +.navbar-search { + position: relative; + float: left; + margin-top: 6px; + margin-bottom: 0; +} +.navbar-search .search-query { + padding: 4px 9px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + color: #ffffff; + color: rgba(255, 255, 255, 0.75); + background: #666; + background: rgba(255, 255, 255, 0.3); + border: 1px solid #111; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -ms-transition: none; + -o-transition: none; + transition: none; +} +.navbar-search .search-query :-moz-placeholder { + color: #eeeeee; +} +.navbar-search .search-query::-webkit-input-placeholder { + color: #eeeeee; +} +.navbar-search .search-query:hover { + color: #ffffff; + background-color: #999999; + background-color: rgba(255, 255, 255, 0.5); +} +.navbar-search .search-query:focus, .navbar-search .search-query.focused { + padding: 5px 10px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 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); + outline: 0; +} +.navbar-fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} +.navbar-fixed-top .navbar-inner { + padding-left: 0; + padding-right: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} +.navbar .nav.pull-right { + float: right; +} +.navbar .nav > li { + display: block; + float: left; +} +.navbar .nav > li > a { + float: none; + padding: 10px 10px 11px; + line-height: 19px; + color: #999999; + text-decoration: none; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} +.navbar .nav > li > a:hover { + background-color: transparent; + color: #ffffff; + text-decoration: none; +} +.navbar .nav .active > a, .navbar .nav .active > a:hover { + color: #ffffff; + text-decoration: none; + background-color: #222222; + background-color: rgba(0, 0, 0, 0.5); +} +.navbar .divider-vertical { + height: 40px; + width: 1px; + margin: 0 9px; + overflow: hidden; + background-color: #222222; + border-right: 1px solid #333333; +} +.navbar .nav.pull-right { + margin-left: 10px; + margin-right: 0; +} +.navbar .dropdown-menu { + margin-top: 1px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.navbar .dropdown-menu:before { + content: ''; + display: inline-block; + border-left: 7px solid transparent; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-bottom-color: rgba(0, 0, 0, 0.2); + position: absolute; + top: -7px; + left: 9px; +} +.navbar .dropdown-menu:after { + content: ''; + display: inline-block; + border-left: 6px solid transparent; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + position: absolute; + top: -6px; + left: 10px; +} +.navbar .nav .dropdown-toggle .caret, .navbar .nav .open.dropdown .caret { + border-top-color: #ffffff; +} +.navbar .nav .active .caret { + opacity: 1; + filter: alpha(opacity=100); +} +.navbar .nav .open > .dropdown-toggle, .navbar .nav .active > .dropdown-toggle, .navbar .nav .open.active > .dropdown-toggle { + background-color: transparent; +} +.navbar .nav .active > .dropdown-toggle:hover { + color: #ffffff; +} +.navbar .nav.pull-right .dropdown-menu { + left: auto; + right: 0; +} +.navbar .nav.pull-right .dropdown-menu:before { + left: auto; + right: 12px; +} +.navbar .nav.pull-right .dropdown-menu:after { + left: auto; + right: 13px; +} +.breadcrumb { + padding: 7px 14px; + margin: 0 0 18px; + background-color: #fbfbfb; + background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5)); + background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5); + background-image: -o-linear-gradient(top, #ffffff, #f5f5f5); + background-image: linear-gradient(top, #ffffff, #f5f5f5); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0); + border: 1px solid #ddd; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} +.breadcrumb li { + display: inline; + text-shadow: 0 1px 0 #ffffff; +} +.breadcrumb .divider { + padding: 0 5px; + color: #999999; +} +.breadcrumb .active a { + color: #333333; +} +.pagination { + height: 36px; + margin: 18px 0; +} +.pagination ul { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; + margin-left: 0; + margin-bottom: 0; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -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 li { + display: inline; +} +.pagination a { + float: left; + padding: 0 14px; + line-height: 34px; + text-decoration: none; + border: 1px solid #ddd; + border-left-width: 0; +} +.pagination a:hover, .pagination .active a { + background-color: #f5f5f5; +} +.pagination .active a { + color: #999999; + cursor: default; +} +.pagination .disabled a, .pagination .disabled a:hover { + color: #999999; + background-color: transparent; + cursor: default; +} +.pagination li:first-child a { + border-left-width: 1px; + -webkit-border-radius: 3px 0 0 3px; + -moz-border-radius: 3px 0 0 3px; + border-radius: 3px 0 0 3px; +} +.pagination li:last-child a { + -webkit-border-radius: 0 3px 3px 0; + -moz-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} +.pagination-centered { + text-align: center; +} +.pagination-right { + text-align: right; +} +.pager { + margin-left: 0; + margin-bottom: 18px; + list-style: none; + text-align: center; + *zoom: 1; +} +.pager:before, .pager:after { + display: table; + content: ""; +} +.pager:after { + clear: both; +} +.pager li { + display: inline; +} +.pager a { + 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 a:hover { + text-decoration: none; + background-color: #f5f5f5; +} +.pager .next a { + float: right; +} +.pager .previous a { + float: left; +} +.modal-open .dropdown-menu { + z-index: 2050; +} +.modal-open .dropdown.open { + *z-index: 2050; +} +.modal-open .popover { + z-index: 2060; +} +.modal-open .tooltip { + z-index: 2070; +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop, .modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} +.modal { + position: fixed; + top: 50%; + left: 50%; + z-index: 1050; + max-height: 500px; + overflow: auto; + width: 560px; + margin: -250px 0 0 -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + /* IE6-7 */ + + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -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 { + -webkit-transition: opacity .3s linear, top .3s ease-out; + -moz-transition: opacity .3s linear, top .3s ease-out; + -ms-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; + top: -25%; +} +.modal.fade.in { + top: 50%; +} +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} +.modal-header .close { + margin-top: 2px; +} +.modal-body { + padding: 15px; +} +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + 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; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; + *zoom: 1; +} +.modal-footer:before, .modal-footer:after { + display: table; + content: ""; +} +.modal-footer:after { + clear: both; +} +.modal-footer .btn { + float: right; + margin-left: 5px; + margin-bottom: 0; +} +.tooltip { + position: absolute; + z-index: 1020; + display: block; + visibility: visible; + padding: 5px; + font-size: 11px; + opacity: 0; + filter: alpha(opacity=0); +} +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} +.tooltip.top { + margin-top: -2px; +} +.tooltip.right { + margin-left: 2px; +} +.tooltip.bottom { + margin-top: 2px; +} +.tooltip.left { + margin-left: -2px; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 5px solid #000000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 5px solid #000000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-bottom: 5px solid #000000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-right: 5px solid #000000; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + padding: 5px; +} +.popover.top { + margin-top: -5px; +} +.popover.right { + margin-left: 5px; +} +.popover.bottom { + margin-top: 5px; +} +.popover.left { + margin-left: -5px; +} +.popover.top .arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: 5px solid #000000; +} +.popover.right .arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-right: 5px solid #000000; +} +.popover.bottom .arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-bottom: 5px solid #000000; +} +.popover.left .arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + border-left: 5px solid #000000; +} +.popover .arrow { + position: absolute; + width: 0; + height: 0; +} +.popover-inner { + padding: 3px; + width: 280px; + overflow: hidden; + background: #000000; + background: rgba(0, 0, 0, 0.8); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -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); +} +.popover-title { + padding: 9px 15px; + line-height: 1; + background-color: #f5f5f5; + border-bottom: 1px solid #eee; + -webkit-border-radius: 3px 3px 0 0; + -moz-border-radius: 3px 3px 0 0; + border-radius: 3px 3px 0 0; +} +.popover-content { + padding: 14px; + background-color: #ffffff; + -webkit-border-radius: 0 0 3px 3px; + -moz-border-radius: 0 0 3px 3px; + border-radius: 0 0 3px 3px; + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} +.popover-content p, .popover-content ul, .popover-content ol { + margin-bottom: 0; +} +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} +.thumbnails:before, .thumbnails:after { + display: table; + content: ""; +} +.thumbnails:after { + clear: both; +} +.thumbnails > li { + float: left; + margin: 0 0 18px 20px; +} +.thumbnail { + display: block; + padding: 4px; + line-height: 1; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075); +} +a.thumbnail:hover { + border-color: #0088cc; + -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-left: auto; + margin-right: auto; +} +.thumbnail .caption { + padding: 9px; +} +.label { + padding: 1px 3px 2px; + font-size: 9.75px; + font-weight: bold; + color: #ffffff; + text-transform: uppercase; + background-color: #999999; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.label-important { + background-color: #b94a48; +} +.label-warning { + background-color: #f89406; +} +.label-success { + background-color: #468847; +} +.label-info { + background-color: #3a87ad; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@-moz-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} +.progress { + overflow: hidden; + height: 18px; + margin-bottom: 18px; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -ms-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(top, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', 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; +} +.progress .bar { + width: 0%; + height: 18px; + color: #ffffff; + font-size: 12px; + 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: -ms-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(top, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', 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 0.6s ease; + -moz-transition: width 0.6s ease; + -ms-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} +.progress-striped .bar { + 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: -ms-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; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-danger .bar { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-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(top, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); +} +.progress-danger.progress-striped .bar { + 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: -ms-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 { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-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(top, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); +} +.progress-success.progress-striped .bar { + 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: -ms-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 { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -ms-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(top, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0); +} +.progress-info.progress-striped .bar { + 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: -ms-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: 18px; +} +.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-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} +.carousel { + position: relative; + margin-bottom: 18px; + line-height: 1; +} +.carousel-inner { + overflow: hidden; + width: 100%; + position: relative; +} +.carousel .item { + display: none; + position: relative; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -ms-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} +.carousel .item > img { + display: block; + line-height: 1; +} +.carousel .active, .carousel .next, .carousel .prev { + display: block; +} +.carousel .active { + left: 0; +} +.carousel .next, .carousel .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel .next { + left: 100%; +} +.carousel .prev { + left: -100%; +} +.carousel .next.left, .carousel .prev.right { + left: 0; +} +.carousel .active.left { + left: -100%; +} +.carousel .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: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} +.carousel-control.right { + left: auto; + right: 15px; +} +.carousel-control:hover { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} +.carousel-caption { + position: absolute; + left: 0; + right: 0; + bottom: 0; + padding: 10px 15px 5px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} +.carousel-caption h4, .carousel-caption p { + color: #ffffff; +} +.hero-unit { + padding: 60px; + margin-bottom: 30px; + background-color: #f5f5f5; + -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; +} +.hero-unit p { + font-size: 18px; + font-weight: 200; + line-height: 27px; +} +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.hide { + display: none; +} +.show { + display: block; +} +.invisible { + visibility: hidden; +} diff --git a/build/documentation/api/css/bootstrap.min.css b/build/documentation/api/css/bootstrap.min.css new file mode 100644 index 00000000..d5221249 --- /dev/null +++ b/build/documentation/api/css/bootstrap.min.css @@ -0,0 +1,611 @@ +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;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{max-width:100%;height:auto;border:0;-ms-interpolation-mode:bicubic;} +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,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;} +input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;} +input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;} +textarea{overflow:auto;vertical-align:top;} +body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;color:#333333;background-color:#ffffff;} +a{color:#0088cc;text-decoration:none;} +a:hover{color:#005580;text-decoration:underline;} +.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";} +.row:after{clear:both;} +[class*="span"]{float:left;margin-left:20px;} +.span1{width:60px;} +.span2{width:140px;} +.span3{width:220px;} +.span4{width:300px;} +.span5{width:380px;} +.span6{width:460px;} +.span7{width:540px;} +.span8{width:620px;} +.span9{width:700px;} +.span10{width:780px;} +.span11{width:860px;} +.span12,.container{width:940px;} +.offset1{margin-left:100px;} +.offset2{margin-left:180px;} +.offset3{margin-left:260px;} +.offset4{margin-left:340px;} +.offset5{margin-left:420px;} +.offset6{margin-left:500px;} +.offset7{margin-left:580px;} +.offset8{margin-left:660px;} +.offset9{margin-left:740px;} +.offset10{margin-left:820px;} +.offset11{margin-left:900px;} +.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} +.row-fluid:after{clear:both;} +.row-fluid>[class*="span"]{float:left;margin-left:2.127659574%;} +.row-fluid>[class*="span"]:first-child{margin-left:0;} +.row-fluid .span1{width:6.382978723%;} +.row-fluid .span2{width:14.89361702%;} +.row-fluid .span3{width:23.404255317%;} +.row-fluid .span4{width:31.914893614%;} +.row-fluid .span5{width:40.425531911%;} +.row-fluid .span6{width:48.93617020799999%;} +.row-fluid .span7{width:57.446808505%;} +.row-fluid .span8{width:65.95744680199999%;} +.row-fluid .span9{width:74.468085099%;} +.row-fluid .span10{width:82.97872339599999%;} +.row-fluid .span11{width:91.489361693%;} +.row-fluid .span12{width:99.99999998999999%;} +.container{width:940px;margin-left:auto;margin-right:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";} +.container:after{clear:both;} +.container-fluid{padding-left:20px;padding-right:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";} +.container-fluid:after{clear:both;} +p{margin:0 0 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;}p small{font-size:11px;color:#999999;} +.lead{margin-bottom:18px;font-size:20px;font-weight:200;line-height:27px;} +h1,h2,h3,h4,h5,h6{margin:0;font-weight:bold;color:#333333;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#999999;} +h1{font-size:30px;line-height:36px;}h1 small{font-size:18px;} +h2{font-size:24px;line-height:36px;}h2 small{font-size:18px;} +h3{line-height:27px;font-size:18px;}h3 small{font-size:14px;} +h4,h5,h6{line-height:18px;} +h4{font-size:14px;}h4 small{font-size:12px;} +h5{font-size:12px;} +h6{font-size:11px;color:#999999;text-transform:uppercase;} +.page-header{padding-bottom:17px;margin:18px 0;border-bottom:1px solid #eeeeee;} +.page-header h1{line-height:1;} +ul,ol{padding:0;margin:0 0 9px 25px;} +ul ul,ul ol,ol ol,ol ul{margin-bottom:0;} +ul{list-style:disc;} +ol{list-style:decimal;} +li{line-height:18px;} +ul.unstyled{margin-left:0;list-style:none;} +dl{margin-bottom:18px;} +dt,dd{line-height:18px;} +dt{font-weight:bold;} +dd{margin-left:9px;} +hr{margin:18px 0;border:0;border-top:1px solid #e5e5e5;border-bottom:1px solid #ffffff;} +strong{font-weight:bold;} +em{font-style:italic;} +.muted{color:#999999;} +abbr{font-size:90%;text-transform:uppercase;border-bottom:1px dotted #ddd;cursor:help;} +blockquote{padding:0 0 0 15px;margin:0 0 18px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:22.5px;} +blockquote small{display:block;line-height:18px;color:#999999;}blockquote small:before{content:'\2014 \00A0';} +blockquote.pull-right{float:right;padding-left:0;padding-right:15px;border-left:0;border-right:5px solid #eeeeee;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;} +q:before,q:after,blockquote:before,blockquote:after{content:"";} +address{display:block;margin-bottom:18px;line-height:18px;font-style:normal;} +small{font-size:100%;} +cite{font-style:normal;} +code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +code{padding:3px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;} +pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12px;line-height:18px;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;white-space:pre;white-space:pre-wrap;word-break:break-all;}pre.prettyprint{margin-bottom:18px;} +pre code{padding:0;background-color:transparent;} +form{margin:0 0 18px;} +fieldset{padding:0;margin:0;border:0;} +legend{display:block;width:100%;padding:0;margin-bottom:27px;font-size:19.5px;line-height:36px;color:#333333;border:0;border-bottom:1px solid #eee;} +label,input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:18px;} +label{display:block;margin-bottom:5px;color:#333333;} +input,textarea,select,.uneditable-input{display:inline-block;width:210px;height:18px;padding:4px;margin-bottom:9px;font-size:13px;line-height:18px;color:#555555;border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +.uneditable-textarea{width:auto;height:auto;} +label input,label textarea,label select{display:block;} +input[type="image"],input[type="checkbox"],input[type="radio"]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;border:0;cursor:pointer;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +input[type="file"]{padding:initial;line-height:initial;border:initial;background-color:#ffffff;background-color:initial;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +input[type="button"],input[type="reset"],input[type="submit"]{width:auto;height:auto;} +select,input[type="file"]{height:28px;*margin-top:4px;line-height:28px;} +select{width:220px;background-color:#ffffff;} +select[multiple],select[size]{height:auto;} +input[type="image"]{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +textarea{height:auto;} +input[type="hidden"]{display:none;} +.radio,.checkbox{padding-left:18px;} +.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px;} +.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;} +.radio.inline,.checkbox.inline{display:inline-block;margin-bottom:0;vertical-align:middle;} +.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;} +.controls>.radio.inline:first-child,.controls>.checkbox.inline:first-child{padding-top:0;} +input,textarea{-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 0.2s,box-shadow linear 0.2s;-moz-transition:border linear 0.2s,box-shadow linear 0.2s;-ms-transition:border linear 0.2s,box-shadow linear 0.2s;-o-transition:border linear 0.2s,box-shadow linear 0.2s;transition:border linear 0.2s,box-shadow linear 0.2s;} +input:focus,textarea:focus{border-color:rgba(82, 168, 236, 0.8);-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);outline:0;outline:thin dotted \9;} +input[type="file"]:focus,input[type="checkbox"]:focus,select:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} +.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{float:none;margin-left:0;} +input.span1,textarea.span1,.uneditable-input.span1{width:50px;} +input.span2,textarea.span2,.uneditable-input.span2{width:130px;} +input.span3,textarea.span3,.uneditable-input.span3{width:210px;} +input.span4,textarea.span4,.uneditable-input.span4{width:290px;} +input.span5,textarea.span5,.uneditable-input.span5{width:370px;} +input.span6,textarea.span6,.uneditable-input.span6{width:450px;} +input.span7,textarea.span7,.uneditable-input.span7{width:530px;} +input.span8,textarea.span8,.uneditable-input.span8{width:610px;} +input.span9,textarea.span9,.uneditable-input.span9{width:690px;} +input.span10,textarea.span10,.uneditable-input.span10{width:770px;} +input.span11,textarea.span11,.uneditable-input.span11{width:850px;} +input.span12,textarea.span12,.uneditable-input.span12{width:930px;} +input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f5f5f5;border-color:#ddd;cursor:not-allowed;} +.control-group.warning>label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;} +.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;border-color:#c09853;}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:0 0 6px #dbc59e;-moz-box-shadow:0 0 6px #dbc59e;box-shadow: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>label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;} +.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;border-color:#b94a48;}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:0 0 6px #d59392;-moz-box-shadow:0 0 6px #d59392;box-shadow: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>label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;} +.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;border-color:#468847;}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:0 0 6px #7aba7b;-moz-box-shadow:0 0 6px #7aba7b;box-shadow: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;} +input:focus:required:invalid,textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:required:invalid:focus,textarea:focus:required:invalid:focus,select:focus:required: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:17px 20px 18px;margin-top:18px;margin-bottom:18px;background-color:#f5f5f5;border-top:1px solid #ddd;} +.uneditable-input{display:block;background-color:#ffffff;border-color:#eee;-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);cursor:not-allowed;} +:-moz-placeholder{color:#999999;} +::-webkit-input-placeholder{color:#999999;} +.help-block{margin-top:5px;margin-bottom:0;color:#999999;} +.help-inline{display:inline-block;*display:inline;*zoom:1;margin-bottom:9px;vertical-align:middle;padding-left:5px;} +.input-prepend,.input-append{margin-bottom:5px;*zoom:1;}.input-prepend:before,.input-append:before,.input-prepend:after,.input-append:after{display:table;content:"";} +.input-prepend:after,.input-append:after{clear:both;} +.input-prepend input,.input-append input,.input-prepend .uneditable-input,.input-append .uneditable-input{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}.input-prepend input:focus,.input-append input:focus,.input-prepend .uneditable-input:focus,.input-append .uneditable-input:focus{position:relative;z-index:2;} +.input-prepend .uneditable-input,.input-append .uneditable-input{border-left-color:#ccc;} +.input-prepend .add-on,.input-append .add-on{float:left;display:block;width:auto;min-width:16px;height:18px;margin-right:-1px;padding:4px 5px;font-weight:normal;line-height:18px;color:#999999;text-align:center;text-shadow:0 1px 0 #ffffff;background-color:#f5f5f5;border:1px solid #ccc;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} +.input-prepend .active,.input-append .active{background-color:#a9dba9;border-color:#46a546;} +.input-prepend .add-on{*margin-top:1px;} +.input-append input,.input-append .uneditable-input{float:left;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} +.input-append .uneditable-input{border-right-color:#ccc;} +.input-append .add-on{margin-right:0;margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;} +.input-append input:first-child{*margin-left:-160px;}.input-append input:first-child+.add-on{*margin-left:-21px;} +.search-query{padding-left:14px;padding-right:14px;margin-bottom:0;-webkit-border-radius:14px;-moz-border-radius:14px;border-radius: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{display:inline-block;margin-bottom:0;} +.form-search label,.form-inline label,.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{display:inline-block;} +.form-search .input-append .add-on,.form-inline .input-prepend .add-on,.form-search .input-append .add-on,.form-inline .input-prepend .add-on{vertical-align:middle;} +.control-group{margin-bottom:9px;} +.form-horizontal legend+.control-group{margin-top:18px;-webkit-margin-top-collapse:separate;} +.form-horizontal .control-group{margin-bottom:18px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";} +.form-horizontal .control-group:after{clear:both;} +.form-horizontal .control-group>label{float:left;width:140px;padding-top:5px;text-align:right;} +.form-horizontal .controls{margin-left:160px;} +.form-horizontal .form-actions{padding-left:160px;} +table{max-width:100%;border-collapse:collapse;border-spacing:0;} +.table{width:100%;margin-bottom:18px;}.table th,.table td{padding:8px;line-height:18px;text-align:left;border-top:1px solid #ddd;} +.table th{font-weight:bold;vertical-align:bottom;} +.table td{vertical-align:top;} +.table thead:first-child tr th,.table thead:first-child tr td{border-top:0;} +.table tbody+tbody{border-top:2px solid #ddd;} +.table-condensed th,.table-condensed td{padding:4px 5px;} +.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapsed;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th+th,.table-bordered td+td,.table-bordered th+td,.table-bordered td+th{border-left:1px solid #ddd;} +.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{-webkit-border-radius:4px 0 0 0;-moz-border-radius:4px 0 0 0;border-radius:4px 0 0 0;} +.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;border-radius:0 4px 0 0;} +.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;} +.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child{-webkit-border-radius:0 0 4px 0;-moz-border-radius:0 0 4px 0;border-radius:0 0 4px 0;} +.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9;} +table .span1{float:none;width:44px;margin-left:0;} +table .span2{float:none;width:124px;margin-left:0;} +table .span3{float:none;width:204px;margin-left:0;} +table .span4{float:none;width:284px;margin-left:0;} +table .span5{float:none;width:364px;margin-left:0;} +table .span6{float:none;width:444px;margin-left:0;} +table .span7{float:none;width:524px;margin-left:0;} +table .span8{float:none;width:604px;margin-left:0;} +table .span9{float:none;width:684px;margin-left:0;} +table .span10{float:none;width:764px;margin-left:0;} +table .span11{float:none;width:844px;margin-left:0;} +table .span12{float:none;width:924px;margin-left:0;} +[class^="icon-"]{display:inline-block;width:14px;height:14px;vertical-align:text-top;background-image:url(../img/glyphicons-halflings.png);background-position:14px 14px;background-repeat:no-repeat;*margin-right:.3em;}[class^="icon-"]:last-child{*margin-left:0;} +.icon-white{background-image:url(../img/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{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{background-position:-384px -120px;} +.icon-folder-open{background-position:-408px -120px;} +.icon-resize-vertical{background-position:-432px -119px;} +.icon-resize-horizontal{background-position:-456px -118px;} +.dropdown{position:relative;} +.dropdown-toggle{*margin-bottom:-3px;} +.dropdown-toggle:active,.open .dropdown-toggle{outline:0;} +.caret{display:inline-block;width:0;height:0;text-indent:-99999px;*text-indent:0;vertical-align:top;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000000;opacity:0.3;filter:alpha(opacity=30);content:"\2193";} +.dropdown .caret{margin-top:8px;margin-left:2px;} +.dropdown:hover .caret,.open.dropdown .caret{opacity:1;filter:alpha(opacity=100);} +.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;max-width:220px;_width:160px;padding:4px 0;margin:0;list-style:none;background-color:#ffffff;border-color:#ccc;border-color:rgba(0, 0, 0, 0.2);border-style:solid;border-width:1px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-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;*border-right-width:2px;*border-bottom-width:2px;}.dropdown-menu.bottom-up{top:auto;bottom:100%;margin-bottom:2px;} +.dropdown-menu .divider{height:1px;margin:5px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;*width:100%;*margin:-5px 0 5px;} +.dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:normal;line-height:18px;color:#555555;white-space:nowrap;} +.dropdown-menu li>a:hover,.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#ffffff;text-decoration:none;background-color:#0088cc;} +.dropdown.open{*z-index:1000;}.dropdown.open .dropdown-toggle{color:#ffffff;background:#ccc;background:rgba(0, 0, 0, 0.3);} +.dropdown.open .dropdown-menu{display:block;} +.typeahead{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 #eee;border:1px solid rgba(0, 0, 0, 0.05);-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);} +.fade{-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-ms-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;opacity:0;}.fade.in{opacity:1;} +.collapse{-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-ms-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;position:relative;overflow:hidden;height:0;}.collapse.in{height:auto;} +.close{float:right;font-size:20px;font-weight:bold;line-height:18px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover{color:#000000;text-decoration:none;opacity:0.4;filter:alpha(opacity=40);cursor:pointer;} +.btn{display:inline-block;padding:4px 10px 4px;font-size:13px;line-height:18px;color:#333333;text-align:center;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);background-color:#fafafa;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);background-image:-ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:-o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);border:1px solid #ccc;border-bottom-color:#bbb;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-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);cursor:pointer;*margin-left:.3em;}.btn:first-child{*margin-left:0;} +.btn:hover{color:#333333;text-decoration:none;background-color:#e6e6e6;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-ms-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;} +.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;} +.btn.active,.btn:active{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);background-color:#e6e6e6;background-color:#d9d9d9 \9;color:rgba(0, 0, 0, 0.5);outline:0;} +.btn.disabled,.btn[disabled]{cursor:default;background-image:none;background-color:#e6e6e6;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +.btn-large{padding:9px 14px;font-size:15px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;} +.btn-large .icon{margin-top:1px;} +.btn-small{padding:5px 9px;font-size:11px;line-height:16px;} +.btn-small .icon{margin-top:-1px;} +.btn-primary,.btn-primary:hover,.btn-warning,.btn-warning:hover,.btn-danger,.btn-danger:hover,.btn-success,.btn-success:hover,.btn-info,.btn-info:hover{text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);color:#ffffff;} +.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active{color:rgba(255, 255, 255, 0.75);} +.btn-primary{background-color:#006dcc;background-image:-moz-linear-gradient(top, #0088cc, #0044cc);background-image:-ms-linear-gradient(top, #0088cc, #0044cc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));background-image:-webkit-linear-gradient(top, #0088cc, #0044cc);background-image:-o-linear-gradient(top, #0088cc, #0044cc);background-image:linear-gradient(top, #0088cc, #0044cc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);border-color:#0044cc #0044cc #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(enabled = false);}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{background-color:#0044cc;} +.btn-primary:active,.btn-primary.active{background-color:#003399 \9;} +.btn-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-ms-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(top, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);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(enabled = false);}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{background-color:#f89406;} +.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;} +.btn-danger{background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-ms-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(top, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);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(enabled = false);}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{background-color:#bd362f;} +.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;} +.btn-success{background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-ms-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(top, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);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(enabled = false);}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{background-color:#51a351;} +.btn-success:active,.btn-success.active{background-color:#408140 \9;} +.btn-info{background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-ms-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(top, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);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(enabled = false);}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{background-color:#2f96b4;} +.btn-info:active,.btn-info.active{background-color:#24748c \9;} +button.btn,input[type="submit"].btn{*padding-top:2px;*padding-bottom:2px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;} +button.btn.large,input[type="submit"].btn.large{*padding-top:7px;*padding-bottom:7px;} +button.btn.small,input[type="submit"].btn.small{*padding-top:3px;*padding-bottom:3px;} +.btn-group{position:relative;*zoom:1;*margin-left:.3em;}.btn-group:before,.btn-group:after{display:table;content:"";} +.btn-group:after{clear:both;} +.btn-group:first-child{*margin-left:0;} +.btn-group+.btn-group{margin-left:5px;} +.btn-toolbar{margin-top:9px;margin-bottom:9px;}.btn-toolbar .btn-group{display:inline-block;*display:inline;*zoom:1;} +.btn-group .btn{position:relative;float:left;margin-left:-1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.btn-group .btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;} +.btn-group .btn:last-child,.btn-group .dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;} +.btn-group .btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;} +.btn-group .btn.large:last-child,.btn-group .large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius: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 .dropdown-toggle{padding-left:8px;padding-right: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);*padding-top:5px;*padding-bottom:5px;} +.btn-group.open{*z-index:1000;}.btn-group.open .dropdown-menu{display:block;margin-top:1px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;} +.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);} +.btn .caret{margin-top:7px;margin-left:0;} +.btn:hover .caret,.open.btn-group .caret{opacity:1;filter:alpha(opacity=100);} +.btn-primary .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret{border-top-color:#ffffff;opacity:0.75;filter:alpha(opacity=75);} +.btn-small .caret{margin-top:4px;} +.alert{padding:8px 35px 8px 14px;margin-bottom:18px;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-heading{color:#c09853;} +.alert .close{position:relative;top:-2px;right:-21px;line-height:18px;} +.alert-success{background-color:#dff0d8;border-color:#d6e9c6;} +.alert-success,.alert-success .alert-heading{color:#468847;} +.alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;} +.alert-danger,.alert-error,.alert-danger .alert-heading,.alert-error .alert-heading{color:#b94a48;} +.alert-info{background-color:#d9edf7;border-color:#bce8f1;} +.alert-info,.alert-info .alert-heading{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-left:0;margin-bottom:18px;list-style:none;} +.nav>li>a{display:block;} +.nav>li>a:hover{text-decoration:none;background-color:#eeeeee;} +.nav-list{padding-left:14px;padding-right:14px;margin-bottom:0;} +.nav-list>li>a,.nav-list .nav-header{display:block;padding:3px 15px;margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);} +.nav-list .nav-header{font-size:11px;font-weight:bold;line-height:18px;color:#999999;text-transform:uppercase;} +.nav-list .nav-header *{text-transform:none;} +.nav-list>li+.nav-header{margin-top:9px;} +.nav-list .active>a,.nav-list .active>a:hover{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#0088cc;} +.nav-list [class^="icon-"]{margin-right:2px;} +.nav-tabs,.nav-pills{*zoom:1;}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;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:9px;padding-bottom:9px;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{border-color:#eeeeee #eeeeee #dddddd;} +.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555555;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;} +.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{color:#ffffff;background-color:#0088cc;} +.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-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;} +.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;} +.nav-tabs.nav-stacked>li>a:hover{border-color:#ddd;z-index:2;} +.nav-pills.nav-stacked>li>a{margin-bottom:3px;} +.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px;} +.nav-tabs .dropdown-menu,.nav-pills .dropdown-menu{margin-top:1px;border-width:1px;} +.nav-pills .dropdown-menu{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.nav-tabs .dropdown-toggle .caret,.nav-pills .dropdown-toggle .caret{border-top-color:#0088cc;margin-top:6px;} +.nav-tabs .dropdown-toggle:hover .caret,.nav-pills .dropdown-toggle:hover .caret{border-top-color:#005580;} +.nav-tabs .active .dropdown-toggle .caret,.nav-pills .active .dropdown-toggle .caret{border-top-color:#333333;} +.nav>.dropdown.active>a:hover{color:#000000;cursor:pointer;} +.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>.open.active>a:hover{color:#ffffff;background-color:#999999;border-color:#999999;} +.nav .open .caret,.nav .open.active .caret,.nav .open a:hover .caret{border-top-color:#ffffff;opacity:1;filter:alpha(opacity=100);} +.tabs-stacked .open>a:hover{border-color:#999999;} +.tabbable{*zoom:1;}.tabbable:before,.tabbable:after{display:table;content:"";} +.tabbable:after{clear:both;} +.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{border-bottom-color:transparent;border-top-color:#ddd;} +.tabs-below .nav-tabs .active>a,.tabs-below .nav-tabs .active>a:hover{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{border-color:#eeeeee #dddddd #eeeeee #eeeeee;} +.tabs-left .nav-tabs .active>a,.tabs-left .nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#ffffff;} +.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{border-color:#eeeeee #eeeeee #eeeeee #dddddd;} +.tabs-right .nav-tabs .active>a,.tabs-right .nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#ffffff;} +.navbar{overflow:visible;margin-bottom:18px;} +.navbar-inner{padding-left:20px;padding-right:20px;background-color:#2c2c2c;background-image:-moz-linear-gradient(top, #333333, #222222);background-image:-ms-linear-gradient(top, #333333, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));background-image:-webkit-linear-gradient(top, #333333, #222222);background-image:-o-linear-gradient(top, #333333, #222222);background-image:linear-gradient(top, #333333, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);} +.btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;background-color:#2c2c2c;background-image:-moz-linear-gradient(top, #333333, #222222);background-image:-ms-linear-gradient(top, #333333, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));background-image:-webkit-linear-gradient(top, #333333, #222222);background-image:-o-linear-gradient(top, #333333, #222222);background-image:linear-gradient(top, #333333, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);border-color:#222222 #222222 #000000;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(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);}.btn-navbar:hover,.btn-navbar:active,.btn-navbar.active,.btn-navbar.disabled,.btn-navbar[disabled]{background-color:#222222;} +.btn-navbar:active,.btn-navbar.active{background-color:#080808 \9;} +.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;} +.nav-collapse.collapse{height:auto;} +.navbar .brand:hover{text-decoration:none;} +.navbar .brand{float:left;display:block;padding:8px 20px 12px;margin-left:-20px;font-size:20px;font-weight:200;line-height:1;color:#ffffff;} +.navbar .navbar-text{margin-bottom:0;line-height:40px;color:#999999;}.navbar .navbar-text a:hover{color:#ffffff;background-color:transparent;} +.navbar .btn,.navbar .btn-group{margin-top:5px;} +.navbar .btn-group .btn{margin-top:0;} +.navbar-form{margin-bottom:0;*zoom:1;}.navbar-form:before,.navbar-form:after{display:table;content:"";} +.navbar-form:after{clear:both;} +.navbar-form input,.navbar-form select{display:inline-block;margin-top:5px;margin-bottom:0;} +.navbar-form .radio,.navbar-form .checkbox{margin-top:5px;} +.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;} +.navbar-search{position:relative;float:left;margin-top:6px;margin-bottom:0;}.navbar-search .search-query{padding:4px 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;color:#ffffff;color:rgba(255, 255, 255, 0.75);background:#666;background:rgba(255, 255, 255, 0.3);border:1px solid #111;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none;}.navbar-search .search-query :-moz-placeholder{color:#eeeeee;} +.navbar-search .search-query::-webkit-input-placeholder{color:#eeeeee;} +.navbar-search .search-query:hover{color:#ffffff;background-color:#999999;background-color:rgba(255, 255, 255, 0.5);} +.navbar-search .search-query:focus,.navbar-search .search-query.focused{padding:5px 10px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border: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);outline:0;} +.navbar-fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030;} +.navbar-fixed-top .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;} +.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0;} +.navbar .nav.pull-right{float:right;} +.navbar .nav>li{display:block;float:left;} +.navbar .nav>li>a{float:none;padding:10px 10px 11px;line-height:19px;color:#999999;text-decoration:none;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);} +.navbar .nav>li>a:hover{background-color:transparent;color:#ffffff;text-decoration:none;} +.navbar .nav .active>a,.navbar .nav .active>a:hover{color:#ffffff;text-decoration:none;background-color:#222222;background-color:rgba(0, 0, 0, 0.5);} +.navbar .divider-vertical{height:40px;width:1px;margin:0 9px;overflow:hidden;background-color:#222222;border-right:1px solid #333333;} +.navbar .nav.pull-right{margin-left:10px;margin-right:0;} +.navbar .dropdown-menu{margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.navbar .dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);position:absolute;top:-7px;left:9px;} +.navbar .dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:10px;} +.navbar .nav .dropdown-toggle .caret,.navbar .nav .open.dropdown .caret{border-top-color:#ffffff;} +.navbar .nav .active .caret{opacity:1;filter:alpha(opacity=100);} +.navbar .nav .open>.dropdown-toggle,.navbar .nav .active>.dropdown-toggle,.navbar .nav .open.active>.dropdown-toggle{background-color:transparent;} +.navbar .nav .active>.dropdown-toggle:hover{color:#ffffff;} +.navbar .nav.pull-right .dropdown-menu{left:auto;right:0;}.navbar .nav.pull-right .dropdown-menu:before{left:auto;right:12px;} +.navbar .nav.pull-right .dropdown-menu:after{left:auto;right:13px;} +.breadcrumb{padding:7px 14px;margin:0 0 18px;background-color:#fbfbfb;background-image:-moz-linear-gradient(top, #ffffff, #f5f5f5);background-image:-ms-linear-gradient(top, #ffffff, #f5f5f5);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5));background-image:-webkit-linear-gradient(top, #ffffff, #f5f5f5);background-image:-o-linear-gradient(top, #ffffff, #f5f5f5);background-image:linear-gradient(top, #ffffff, #f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;}.breadcrumb li{display:inline;text-shadow:0 1px 0 #ffffff;} +.breadcrumb .divider{padding:0 5px;color:#999999;} +.breadcrumb .active a{color:#333333;} +.pagination{height:36px;margin:18px 0;} +.pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-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 li{display:inline;} +.pagination a{float:left;padding:0 14px;line-height:34px;text-decoration:none;border:1px solid #ddd;border-left-width:0;} +.pagination a:hover,.pagination .active a{background-color:#f5f5f5;} +.pagination .active a{color:#999999;cursor:default;} +.pagination .disabled a,.pagination .disabled a:hover{color:#999999;background-color:transparent;cursor:default;} +.pagination li:first-child a{border-left-width:1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} +.pagination li:last-child a{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;} +.pagination-centered{text-align:center;} +.pagination-right{text-align:right;} +.pager{margin-left:0;margin-bottom:18px;list-style:none;text-align:center;*zoom:1;}.pager:before,.pager:after{display:table;content:"";} +.pager:after{clear:both;} +.pager li{display:inline;} +.pager a{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 a:hover{text-decoration:none;background-color:#f5f5f5;} +.pager .next a{float:right;} +.pager .previous a{float:left;} +.modal-open .dropdown-menu{z-index:2050;} +.modal-open .dropdown.open{*z-index:2050;} +.modal-open .popover{z-index:2060;} +.modal-open .tooltip{z-index:2070;} +.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000;}.modal-backdrop.fade{opacity:0;} +.modal-backdrop,.modal-backdrop.fade.in{opacity:0.8;filter:alpha(opacity=80);} +.modal{position:fixed;top:50%;left:50%;z-index:1050;max-height:500px;overflow:auto;width:560px;margin:-250px 0 0 -280px;background-color:#ffffff;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;-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{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-ms-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;top:-25%;} +.modal.fade.in{top:50%;} +.modal-header{padding:9px 15px;border-bottom:1px solid #eee;}.modal-header .close{margin-top:2px;} +.modal-body{padding:15px;} +.modal-footer{padding:14px 15px 15px;margin-bottom:0;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;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;*zoom:1;}.modal-footer:before,.modal-footer:after{display:table;content:"";} +.modal-footer:after{clear:both;} +.modal-footer .btn{float:right;margin-left:5px;margin-bottom:0;} +.tooltip{position:absolute;z-index:1020;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);} +.tooltip.top{margin-top:-2px;} +.tooltip.right{margin-left:2px;} +.tooltip.bottom{margin-top:2px;} +.tooltip.left{margin-left:-2px;} +.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;} +.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;} +.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;} +.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;} +.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.tooltip-arrow{position:absolute;width:0;height:0;} +.popover{position:absolute;top:0;left:0;z-index:1010;display:none;padding:5px;}.popover.top{margin-top:-5px;} +.popover.right{margin-left:5px;} +.popover.bottom{margin-top:5px;} +.popover.left{margin-left:-5px;} +.popover.top .arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;} +.popover.right .arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;} +.popover.bottom .arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;} +.popover.left .arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;} +.popover .arrow{position:absolute;width:0;height:0;} +.popover-inner{padding:3px;width:280px;overflow:hidden;background:#000000;background:rgba(0, 0, 0, 0.8);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-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);} +.popover-title{padding:9px 15px;line-height:1;background-color:#f5f5f5;border-bottom:1px solid #eee;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;} +.popover-content{padding:14px;background-color:#ffffff;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0;} +.thumbnails{margin-left:-20px;list-style:none;*zoom:1;}.thumbnails:before,.thumbnails:after{display:table;content:"";} +.thumbnails:after{clear:both;} +.thumbnails>li{float:left;margin:0 0 18px 20px;} +.thumbnail{display:block;padding:4px;line-height:1;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);} +a.thumbnail:hover{border-color:#0088cc;-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-left:auto;margin-right:auto;} +.thumbnail .caption{padding:9px;} +.label{padding:1px 3px 2px;font-size:9.75px;font-weight:bold;color:#ffffff;text-transform:uppercase;background-color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} +.label-important{background-color:#b94a48;} +.label-warning{background-color:#f89406;} +.label-success{background-color:#468847;} +.label-info{background-color:#3a87ad;} +@-webkit-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@-moz-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}.progress{overflow:hidden;height:18px;margin-bottom:18px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-ms-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(top, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', 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;} +.progress .bar{width:0%;height:18px;color:#ffffff;font-size:12px;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:-ms-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(top, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', 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 0.6s ease;-moz-transition:width 0.6s ease;-ms-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;} +.progress-striped .bar{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:-ms-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;animation:progress-bar-stripes 2s linear infinite;} +.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-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(top, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);} +.progress-danger.progress-striped .bar{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:-ms-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{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-ms-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(top, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);} +.progress-success.progress-striped .bar{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:-ms-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{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-ms-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(top, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);} +.progress-info.progress-striped .bar{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:-ms-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:18px;} +.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-inner{padding:9px 15px;border-top:1px solid #e5e5e5;} +.carousel{position:relative;margin-bottom:18px;line-height:1;} +.carousel-inner{overflow:hidden;width:100%;position:relative;} +.carousel .item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-moz-transition:0.6s ease-in-out left;-ms-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;} +.carousel .item>img{display:block;line-height:1;} +.carousel .active,.carousel .next,.carousel .prev{display:block;} +.carousel .active{left:0;} +.carousel .next,.carousel .prev{position:absolute;top:0;width:100%;} +.carousel .next{left:100%;} +.carousel .prev{left:-100%;} +.carousel .next.left,.carousel .prev.right{left:0;} +.carousel .active.left{left:-100%;} +.carousel .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:#ffffff;text-align:center;background:#222222;border:3px solid #ffffff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:0.5;filter:alpha(opacity=50);}.carousel-control.right{left:auto;right:15px;} +.carousel-control:hover{color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);} +.carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:10px 15px 5px;background:#333333;background:rgba(0, 0, 0, 0.75);} +.carousel-caption h4,.carousel-caption p{color:#ffffff;} +.hero-unit{padding:60px;margin-bottom:30px;background-color:#f5f5f5;-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;} +.hero-unit p{font-size:18px;font-weight:200;line-height:27px;} +.pull-right{float:right;} +.pull-left{float:left;} +.hide{display:none;} +.show{display:block;} +.invisible{visibility:hidden;} diff --git a/build/documentation/api/css/jquery.iviewer.css b/build/documentation/api/css/jquery.iviewer.css new file mode 100644 index 00000000..d68c6422 --- /dev/null +++ b/build/documentation/api/css/jquery.iviewer.css @@ -0,0 +1,91 @@ +.iviewer_common { + position:absolute; + bottom:10px; + border: 1px solid #000; + height: 28px; + z-index: 5000; +} + +.iviewer_cursor { + cursor: url(../img/iviewer/hand.cur) 6 8, pointer; +} + +.iviewer_drag_cursor { + cursor: url(../img/iviewer/grab.cur) 6 8, pointer; +} + +.iviewer_button { + width: 28px; + cursor: pointer; + background-position: center center; + background-repeat: no-repeat; +} + +.iviewer_zoom_in { + left: 20px; + background: url(../img/iviewer/iviewer.zoom_in.png); +} + +.iviewer_zoom_out { + left: 55px; + background: url(../img/iviewer/iviewer.zoom_out.png); +} + +.iviewer_zoom_zero { + left: 90px; + background: url(../img/iviewer/iviewer.zoom_zero.png); +} + +.iviewer_zoom_fit { + left: 125px; + background: url(../img/iviewer/iviewer.zoom_fit.png); +} + +.iviewer_zoom_status { + left: 160px; + font: 1em/28px Sans; + color: #000; + background-color: #fff; + text-align: center; + width: 60px; +} + +.iviewer_rotate_left { + left: 227px; + background: #fff url(../img/iviewer/iviewer.rotate_left.png) center center no-repeat; +} + +.iviewer_rotate_right { + left: 262px; + background: #fff url(../img/iviewer/iviewer.rotate_right.png) center center no-repeat; +} + +.viewer +{ + width: 100%; + height: 500px; + position: relative; + background: transparent url('../img/loader.gif') no-repeat center center; +} + +.viewer img +{ + max-width: none; +} + +.wrapper +{ + overflow: hidden; +} + +.iviewer_common +{ + border: 0; + bottom: auto; + top: 10px; +} + +.iviewer_zoom_status +{ + border: 1px solid black; +} diff --git a/build/documentation/api/css/prettify.css b/build/documentation/api/css/prettify.css new file mode 100644 index 00000000..d44b3a22 --- /dev/null +++ b/build/documentation/api/css/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} \ No newline at end of file diff --git a/build/documentation/api/css/template.css b/build/documentation/api/css/template.css new file mode 100644 index 00000000..12a7a693 --- /dev/null +++ b/build/documentation/api/css/template.css @@ -0,0 +1,530 @@ +@import url(bootstrap.min.css); +@import url(bootstrap-responsive.css); +@import url(prettify.css); +@import url(jquery.iviewer.css); +@import url(https://fonts.googleapis.com/css?family=Forum); + +body +{ + padding-top: 60px; /* 60px to make the container go all the way to the bottom of the topbar */ + background: #f9f9f9; + color: #444; +} + +a +{ + color: #55A72F; +} + +td p:last-of-type { + margin: 0; +} + +li.l0, li.l1, li.l2, li.l3, li.l5, li.l6, li.l7, li.l8 +{ + list-style-type: decimal; +} + +a.brand, h2, .hero-unit h1 +{ + font-family: 'Forum', "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +.element .span4 +{ + width: 275px; +} + +.namespace-contents hr, .package-contents hr +{ + border-top: 3px dotted silver; +} + +.namespace-indent, .package-indent +{ + padding-left: 10px; border-left: 1px dashed #f0f0f0; +} + +.element h3 i, .namespace-contents h3 i, .package-contents h3 i +{ + margin-top: 2px; + margin-right: 5px; +} + +.element h3, .namespace-contents h3, .package-contents h3 +{ + margin-top: 25px; + margin-bottom: 20px; + border-bottom: 1px solid silver; +} + +.element h3:first-of-type, .namespace-contents h3:first-of-type, +.package-contents h3:first-of-type +{ + margin-top: 30px; +} + +.element h2 +{ + font-family: inherit; + font-size: 1.2em; + color: black; +} + +.element .type +{ + font-weight: bold; +} + +#search-query +{ + height: auto; +} + +.hero-unit, div.element, .well +{ + border: 1px solid #e0e0e0; + background: white; +} + +.dropdown-menu a{ + overflow: hidden; + text-overflow: ellipsis; +} +h2 +{ + border-bottom: 1px dashed #55A72F; + margin-bottom: 10px; + padding-bottom: 0; + padding-left: 5px; + color: #e9e9e9; + font-weight: normal; + margin-top: 40px; +} + +h2:first-of-type +{ + margin-top: 0; +} + +.hero-unit +{ + background: #75a70d; /* Old browsers */ + background: -moz-radial-gradient(center, ellipse cover, #bfd255 0%, #8eb92a 72%, #72aa00 96%, #9ecb2d 100%); /* FF3.6+ */ + background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%,#bfd255), color-stop(72%,#8eb92a), color-stop(96%,#72aa00), color-stop(100%,#9ecb2d)); /* Chrome,Safari4+ */ + background: -webkit-radial-gradient(center, ellipse cover, #bfd255 0%,#8eb92a 72%,#72aa00 96%,#9ecb2d 100%); /* Chrome10+,Safari5.1+ */ + background: -o-radial-gradient(center, ellipse cover, #bfd255 0%,#8eb92a 72%,#72aa00 96%,#9ecb2d 100%); /* Opera 12+ */ + background: -ms-radial-gradient(center, ellipse cover, #bfd255 0%,#8eb92a 72%,#72aa00 96%,#9ecb2d 100%); /* IE10+ */ + background: radial-gradient(center, ellipse cover, #bfd255 0%,#8eb92a 72%,#72aa00 96%,#9ecb2d 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#bfd255', endColorstr='#9ecb2d',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */ + + padding: 40px 0 15px 0; + box-shadow: inset 0 0 10px gray; +} + +.hero-unit h1 +{ + font-weight: normal; + text-align: center; + color: white; + text-shadow: black 0 0 15px; +} + +.hero-unit h2 +{ + border: none; + color: white; + background: rgba(48, 48, 48, 0.5); + padding: 0; + margin: 0; + margin-top: 15px; + text-align: center; +} + +.namespace-contents h2, .package-contents h2 +{ + padding-left: 44px; + background: transparent url('../img/icons/icon-th-big.png') no-repeat 3px center; +} + +.package-contents h2 +{ + background-image: url('../img/icons/icon-folder-open-big.png'); +} + +.namespace-contents .element h2, .package-contents .element h2 +{ + padding-left: 0; + background: none; +} + +div.element +{ + border-left: 10px solid #55A72F; + border-radius: 5px; + padding: 7px 7px 2px 7px; + margin-bottom: 15px; + margin-left: 0; +} + +div.element.protected +{ + border-left-color: orange; +} + +div.element.private +{ + border-left-color: red; +} + +div.element.class, div.element.interface, div.element.trait +{ + border-left-color: #e0e0e0; +} + +div.element.class.abstract h1, div.element.interface.abstract h1 +{ + font-style: italic; +} + +div.element h1 +{ + font-size: 1.2em; + line-height: 1.5em; + margin-bottom: 10px; + padding-left: 22px; + background: transparent no-repeat left 2px; + word-wrap: break-word; +} + +div.element h1 a +{ + color: transparent; + margin-left: 10px; +} + +div.element h1:hover a +{ + color: silver; +} + +div.element h1 a:hover +{ + color: navy; +} + +div.element a.more:hover +{ + background: #f0f0f0; + color: #444; + text-decoration: none; +} + +div.element a.more +{ + font-weight: bold; + text-align: center; + color: gray; + border-top: 1px dashed silver; + display: block; + margin-top: 5px; + padding: 5px 0; + border-bottom-left-radius: 5px; + border-bottom-right-radius: 5px; +} + +div.element p +{ + font-size: 0.9em; +} + +div.element .table +{ + font-size: 0.9em; +} + +div.element .table th +{ + text-transform: capitalize; +} + +div.detail-description +{ + padding-left: 30px; +} + +div.detail-description table th { + vertical-align: top; +} + +body.invert +{ + background: white; +} + +body.invert div.element +{ + background: #f9f9f9; +} + +ul.side-nav +{ + clear: both; +} + +ul.side-nav li +{ + word-wrap: break-word; + padding-left: 10px; + text-indent: -10px; +} + +ul.side-nav li a +{ + background: transparent no-repeat 5px 3px; + padding-bottom: 10px; + font-style: italic; +} + +ul.side-nav li pre +{ + font-size: 0.8em; + margin: 5px 15px 0 15px; + padding: 2px 5px; + background-color: #f8f8f8; + color: gray; + font-style: normal; + word-wrap: break-word; + text-indent: 0; +} + +ul.side-nav li.view-simple span.description +{ + display: none; +} + +ul.side-nav li.view-simple pre +{ + font-size: inherit; + margin: inherit; + padding: inherit; + background-color: inherit; + border: none; + color: inherit; + font-family: inherit; + font-style: inherit; + padding-bottom: 0; + padding-left: 5px; +} + +ul.side-nav li.view-simple a +{ + padding-bottom: 0; +} + +i.icon-custom +{ + width: 16px; + height: 16px; + background-position: 0; +} + +.table.markers +{ + background: white; +} + +/* JS only functionality; disable by default */ +.btn-group.visibility, .btn-group.view, .btn-group.type-filter +{ + display: none; +} + +.visibility button +{ + height: 24px; +} + +div.element.constant h1, +i.icon-constant { background-image: url('../img/icons/constant.png'); } + +div.element.function h1, +i.icon-function { background-image: url('../img/icons/function.png'); } + +div.element.method h1, +i.icon-method { background-image: url('../img/icons/method.png'); } + +div.element.class h1, +i.icon-class { background-image: url('../img/icons/class.png'); } + +div.element.interface h1, +i.icon-interface { background-image: url('../img/icons/interface.png'); } + +div.element.trait h1, +i.icon-trait { background-image: url('../img/icons/trait.png'); } + +div.element.property h1, +i.icon-property { background-image: url('../img/icons/property.png'); } + +span.empty-namespace +{ + color: silver; +} + +footer +{ + text-align: right; + font-size: 0.8em; + opacity: 0.5; +} + +#mapHolder +{ + border: 4px solid #555; + padding: 0 !important; + overflow: hidden +} + +div.element div.subelement +{ + margin-left: 10px; + padding-bottom: 5px; + clear: both; +} + +pre code +{ + border: none; +} + +div.element div.subelement > code +{ + font-size: 0.8em; + float: left; + margin-right: 10px; + padding: 0 5px; + line-height: 16px; +} + +div.element div.subelement > p +{ + margin-left: 20px; + margin-right: 50px; +} + +div.element div.subelement h4 +{ + color: #666; + margin-bottom: 5px; +} + +div.element div.subelement.response +{ + padding-bottom: 15px; + margin-right: 50px; +} + +div.labels +{ + text-align: right; +} + +.nav-list .nav-header +{ + font-size: 13px; +} + +.nav-list .nav-header .side-nav-header +{ + font-weight: bold; + line-height: 18px; + color: #999999; + text-transform: uppercase; +} + +.detail-description code { + white-space: pre; + display: inline-block; + padding: 10px; +} + +.go_to_top +{ + float: right; + margin-right: 20px; + background: #2C2C2C; + color: #999; + padding: 3px 10px; + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + line-height: 19px; +} + +.visibility .btn { + text-transform: uppercase; + font-size: 0.7em; + font-weight: bold; +} + +.iviewer_common +{ + z-index: 100; +} + +@media (min-width: 980px) +{ + a[name] + { + margin-top: -50px; + position: absolute; + } +} + +@media (min-width: 1200px) +{ + .method .span4 + { + width: 345px; + } +} + +/* redefined because twitter bootstrap assumes that bootstrap-responsive.css */ +@media (max-width: 980px) +{ + body + { + padding-top: 0; + } + + .go_to_top + { + display: none; + } + + .btn-group.visibility + { + font-size: 0.80em; + margin-bottom: 7px; + display: inline-block; + float: right; + } +} + +@media (max-width: 768px) +{ + .hero-unit h1 { + font-size: 30px; + } + .hero-unit h2 { + font-size: 19px; + } + +} +@media (min-width: 768px) and (max-width: 980px) +{ + .method .span4 + { + width: 203px; + } +} diff --git a/build/documentation/api/deprecated.html b/build/documentation/api/deprecated.html new file mode 100644 index 00000000..a38c6ead --- /dev/null +++ b/build/documentation/api/deprecated.html @@ -0,0 +1,128 @@ + + + + + + » Deprecated elements + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ +
+ +
+ +
+ + +
+
No deprecated elements have been found in this project.
+
+
+
+
+ + + + diff --git a/build/documentation/api/errors.html b/build/documentation/api/errors.html new file mode 100644 index 00000000..c232e08d --- /dev/null +++ b/build/documentation/api/errors.html @@ -0,0 +1,1187 @@ + + + + + + » Compilation errors + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + +
+ + + +
+ +

+ + controller/publicfilescontroller.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error36No summary for method getFiles()
+
+
+
+ +

+ + service/previewservice.php + 2 +

+
+ + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error34No summary for property $previewManager
error40No summary for property $baseMimeTypes
+
+
+
+
+
+ +

+ + controller/filescontroller.php + 5 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error99No summary for method getFiles()
error41No summary for property $searchFolderService
error45No summary for property $configService
error49No summary for property $searchMediaService
error53No summary for property $logger
+
+
+
+
+
+
+
+ +

+ + controller/publicpreviewcontroller.php + 2 +

+
+ + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error40No summary for method getThumbnails()
error60No summary for method getPreview()
+
+
+
+ +

+ + http/imageresponse.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error28No summary for property $preview
+
+
+
+
+
+
+
+
+
+ +

+ + middleware/sharingcheckmiddleware.php + 11 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error51Argument $appName is missing from the Docblock of __construct
error51Argument $request is missing from the Docblock of __construct
error51Argument $appConfig is missing from the Docblock of __construct
error51Argument $reflector is missing from the Docblock of __construct
error51Argument $urlGenerator is missing from the Docblock of __construct
error51Argument $logger is missing from the Docblock of __construct
error51No summary for method __construct()
error81Argument $controller is missing from the Docblock of beforeController
error81Argument $methodName is missing from the Docblock of beforeController
error35No summary for property $config
error39No summary for property $reflector
+
+
+
+ +

+ + middleware/checkmiddleware.php + 12 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error59Argument $appName is missing from the Docblock of __construct
error59Argument $request is missing from the Docblock of __construct
error59Argument $urlGenerator is missing from the Docblock of __construct
error59Argument $logger is missing from the Docblock of __construct
error59No summary for method __construct()
error78Argument $controller is missing from the Docblock of afterException
error78Argument $methodName is missing from the Docblock of afterException
error78Argument $exception is missing from the Docblock of afterException
error37No summary for property $appName
error41No summary for property $request
error45No summary for property $urlGenerator
error49No summary for property $logger
+
+
+
+ +

+ + controller/configcontroller.php + 4 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error78No summary for method getConfig()
error36No summary for property $configService
error40No summary for property $previewService
error44No summary for property $logger
+
+
+
+ +

+ + service/searchmediaservice.php + 2 +

+
+ + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error28No summary for property $images
error32No summary for property $supportedMediaTypes
+
+
+
+
+
+ +

+ + preview/preview.php + 7 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error33No summary for property $dataDir
error37No summary for property $previewManager
error41No summary for property $logger
error45No summary for property $userId
error49No summary for property $preview
error53No summary for property $file
error57No summary for property $dims
+
+
+
+ +

+ + controller/jsonhttperror.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error39No summary for method error()
+
+
+
+ +

+ + service/configservice.php + 3 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error33No summary for property $configName
error37No summary for property $privacyChecker
error45No summary for property $configParser
+
+
+
+ +

+ + service/service.php + 3 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error30No summary for property $appName
error34No summary for property $environment
error38No summary for property $logger
+
+
+
+ +

+ + service/searchfolderservice.php + 3 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error105No summary for method hasLocationChanged()
error28No summary for property $virtualRootLevel
error33No summary for property $features
+
+
+
+
+
+ +

+ + controller/publicconfigcontroller.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error34No summary for method getConfig()
+
+
+
+ +

+ + controller/previewcontroller.php + 10 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error125No summary for method getThumbnails()
error154No summary for method getPreview()
error278No summary for method getPreviewData()
error47No summary for property $urlGenerator
error51No summary for property $thumbnailService
error55No summary for property $previewService
error59No summary for property $downloadService
error63No summary for property $eventSource
error67No summary for property $logger
error71No summary for property $download
+
+
+
+
+
+ +

+ + middleware/envcheckmiddleware.php + 15 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error71Argument $appName is missing from the Docblock of __construct
error71Argument $request is missing from the Docblock of __construct
error71Argument $hasher is missing from the Docblock of __construct
error71Argument $session is missing from the Docblock of __construct
error71Argument $environment is missing from the Docblock of __construct
error71Argument $reflector is missing from the Docblock of __construct
error71Argument $urlGenerator is missing from the Docblock of __construct
error71Argument $logger is missing from the Docblock of __construct
error71No summary for method __construct()
error108Argument $controller is missing from the Docblock of beforeController
error108Argument $methodName is missing from the Docblock of beforeController
error45No summary for property $hasher
error49No summary for property $session
error53No summary for property $environment
error57No summary for property $reflector
+
+
+
+ +

+ + controller/pathmanipulation.php + 1 +

+
+ + + + + + + + + + + + + + + +
TypeLineDescription
error18No summary for trait ""
+
+
+
+ +

+ + environment/environment.php + 13 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error101Argument $appName is missing from the Docblock of __construct
error101Argument $userId is missing from the Docblock of __construct
error101Argument $userFolder is missing from the Docblock of __construct
error101Argument $userManager is missing from the Docblock of __construct
error101Argument $serverContainer is missing from the Docblock of __construct
error101Argument $logger is missing from the Docblock of __construct
error101No summary for method __construct()
error38No summary for property $appName
error58No summary for property $userManager
error62No summary for property $sharedNodeId
error66No summary for property $serverContainer
error70No summary for property $logger
error89No summary for property $sharePassword
+
+
+
+
+
+ +

+ + service/thumbnailservice.php + 2 +

+
+ + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error25No summary for property $animatedPreview
error29No summary for property $base64Encode
+
+
+
+
+
+
+
+ +

+ + service/filesservice.php + 2 +

+
+ + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error27No summary for property $virtualRootLevel
error32No summary for property $features
+
+
+
+ +

+ + controller/pagecontroller.php + 8 +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
error97No summary for method index()
error121No summary for method publicIndex()
error142No summary for method errorPage()
error178No summary for method slideshow()
error43No summary for property $environment
error47No summary for property $urlGenerator
error51No summary for property $downloadService
error55No summary for property $appConfig
+
+
+
+
+
+ + + + diff --git a/build/documentation/api/graph_class.html b/build/documentation/api/graph_class.html new file mode 100644 index 00000000..9c940ae6 --- /dev/null +++ b/build/documentation/api/graph_class.html @@ -0,0 +1,129 @@ + + + + + + Gallery PHP code documentation + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+
+
+
+
+
+ + + +
+ + + + diff --git a/build/documentation/api/img/apple-touch-icon-114x114.png b/build/documentation/api/img/apple-touch-icon-114x114.png new file mode 100644 index 0000000000000000000000000000000000000000..1506f6a668fbb2837c06b561895da248c310ac53 GIT binary patch literal 28338 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�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 literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/apple-touch-icon.png b/build/documentation/api/img/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2d320cb5e1215894ef37cf8c6fd7a0085eba06f3 GIT binary patch literal 8358 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 LNHCv2rc(U_{c|km literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/glyphicons-halflings-white.png b/build/documentation/api/img/glyphicons-halflings-white.png new file mode 100644 index 0000000000000000000000000000000000000000..a20760bfde58d1c92cee95116059fba03c68d689 GIT binary patch literal 4352 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 literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/icons/arrow_down.png b/build/documentation/api/img/icons/arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..61505adc46d8fa4156d9b31831ebe6770f0e2757 GIT binary patch literal 606 zcmV-k0-^nhP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iph( z1qcLRmoAwA00G`fL_t(I%cWC2tJ+``e%^eL7t$KUBw$9t*+0;sKcG;!o#ftvQ=v=O zPEznkbn((fBwn}RP@zy12dlPS%uu3(Akjdnjb!m7Z{AKf?FH|p;Io_q=Wq_^JkLWo z=Qsxf&cxXRNV#0TVT@UX5OB_sBngrvNpr^7o%nCPR4T2dTrT%m)3hhWViEKC9B~|j zF^1#uh$Kmn&1OL6a}1fD2f7I*U{_szDuTQUi!ZOqfjWA01!nH;yA``w*%)K zs;Yug3Q-h6DTN>iAcUaZZvWhDHqV4=wffsM&FACsIL_zuX_G9=kR&O+_4XuD6w&YZ zlPHQVyWQ?u0DxMp_GP_Z-y9AHSe6Azl0XPax7|XPWh@p8ESJmcPN(zf4hxRsTn&fA zuar{gx(-1QAP9d+5=9YV7-BM+jB~l%>ytFDR;#zJ>#hvLKqiw(w{yPNyJ*ytHlGe^5w{<6H+p@P5DF!?G;MvWzec z5d^`9X0!S6zm#a(_8ZrA2b!kAG);J(_suYjSEqWV`y{Gq+Kbt2=5Dv!N1CQx)a!M2 sQpyjxu~Ml#WsK2AqtU(B3+LMT58IsRj2DXS7XSbN07*qoM6N<$f?9MBJpcdz literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/icons/arrow_right.png b/build/documentation/api/img/icons/arrow_right.png new file mode 100644 index 0000000000000000000000000000000000000000..60c5927ebf63f388b45315cbc4cc56a77b9f903c GIT binary patch literal 628 zcmV-)0*n2LP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iph( z1qT;gv2%z300Hz#L_t(I%axPMt5Q)EhkyI*EgldQ%_FEFNFoiwK|$ce2O<`vO%-#J z*f5+m4E!U)pbO5VW@l24A`$5(O~gT>V;_X?vwa*%Pb1@|_l9>(HfyjxzP0vRMAI}J zBA?HH1aP2?dagoht>5TwNDO6R(YPG_8y~cXI2Im}{b9lX8_ zilTha<#MhY4K|w%7K;TIiv<)#fubnjoMSSXfKrNJF!)f@w4a$w<}m=UV}t2*irH)i z#ux-a_&XQ9UJr-E0ZJ)MCKDfz$D3;n4h4so5CWso2)Ek}0I1jNHC0vbmrA9tCkBKN z=yW=Wq6k3{z!-zoYK0_8=yW=};c)o2TrR)5TEmVFD5YSGK@>$e91e)0h*qoB@AZ0b zWLbWH{Ea67#u&_IGwgOdw%aYL)#{IazyG>ct9`j{4^CR}cs$tcc4#yjzXyZC2U(V% z|8JH50ce_rZnulkX!Ofwvpp*oi2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4`J+jIM*dB6Xqg)}~| zJoCIb=eAt%N2Sc0*LR=)Gr>jXc+U1{2EKOY&`?3wi#H~`UdZcts5G`~(Smi^VXH-t zNnA2H`u*=l#_~yWzkbC{@|eWZU~_(X%TKE^b)f2_P*>quOSp`{Hl;21nz{an^LB{Ts5!Fr;& literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/icons/constant.png b/build/documentation/api/img/icons/constant.png new file mode 100644 index 0000000000000000000000000000000000000000..f5f180d5a9b09a19b5ae44ad64a1fdceb6a86d7c GIT binary patch literal 496 zcmVrl1?U*0YQ8KBh3^hnN3W5 z2%|~HXz55n-@#z_4GhF=O%)o!1~F5NWx9pcZ;~F+?Pl3!f;~`hPjKs2om2M?&}Yi{ z)a|hNOZ<{ll;no}Bk)fO?j?Pd^dsz_V-;AIg>Bmyh7qUYr=-X5?0(D-NtDZF=JPoK zm&=9SZbzX|h$DHpwjoI*lSww44g39`Mx%jgn$+ucGMNm9VNk2pa2$tryNzwzJxRTg z;8l{SR;vIEhr`H=-EJ4(_i-GD)oR6Jv3R?-aYHZ~jUoig<&w!{f+RYf4giC};OT}S zkx1Zq9*4t$R;z_&Su~qXve_)-@tE~`O*);X-|ureoq}Sq`0d7mBub?cv)PRE`3%5z zyCt8`Q>j##PN(?3kLP)~uKN-h;x$auB$vxYtfW$@*foCnJuN{HCvYhz#zuJz@P!dKp~(AL>x#lFaYJy!Tsagqt+F;zg(Vd_Ma3C z(nGFZm^~mf*5 z)sz1pn_UOj3v?y|2J0zg2h4lZXZ~Oq6V)2(>o0PAi0Mp zcm2O}aQ*+4X;%Lqp4$EY_?&u@^n?8R{_$;a_<;NZ^2eq1Gykv3ut72B2M+tMZ(scX z!_&L}cQnO<)vrjkgy>B%C#)Z+=I#Bf|8MMChN2ecXJi`Peo$P2?0#|mG=^J|^}*N= zPwo1DaqZOq$7k37KfSmE=*JoV_w{7|UykNZn0k89t1|6?Zs{cGcU*1(=|3{P60d%I dd2d6B_y4`!nK<=Rk_TaW8yL|`1mgK1y#VW>cs>9C literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/icons/file-php.png b/build/documentation/api/img/icons/file-php.png new file mode 100644 index 0000000000000000000000000000000000000000..c323f09f66241a28d61f1d2c8e90be0a68126bb6 GIT binary patch literal 4017 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 L;uWgGz+epk&R;19 literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/icons/folder.gif b/build/documentation/api/img/icons/folder.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b31631ca2bfec3a8afb1bfdd4f8ed4c5bcc3a18 GIT binary patch literal 106 zcmZ?wbhEHb6ky=hKW2GJ7 I#Kd3?0MGg2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4c?q7?3B2Xp1x8ImHETXz54QVYrPgqHx8=(z e>Gl76{l!*pI92y$_dTH37(8A5T-G@yGywo6mxkK_ literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/icons/icon-folder-open-big.png b/build/documentation/api/img/icons/icon-folder-open-big.png new file mode 100644 index 0000000000000000000000000000000000000000..fae384ef4df761b2d6cc250ed5787e430ae91663 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^azHG`!3HF+C+nOCQtLfk978H@y`6TEw^f11_3i;d ziGzYN2L&Zg3QDws(66dq&SgShn{Thb{zRo^(j5Lg&dD7z8Ed<2HaxncvF_0qB|qh( zD^{Iwcon{}=b8RLEj=%X$?owoQ+czMDqpDz@out+{J4%~%}Jdw83lFk?!Av|@026WQIOdE8_{3R(~E4X}F}*cK0{Nlc(N@tWx{N75ZIyLFkD`ce?_+omU+4eIu&X fef&+H?MME!>ysALYPH`1I-SAO)z4*}Q$iB}E$LkN literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/icons/icon-th-big.png b/build/documentation/api/img/icons/icon-th-big.png new file mode 100644 index 0000000000000000000000000000000000000000..04b0ad872a98de63bc0e300e627ce69a2a209471 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fhMq2tAr-gYPBH{4<6!#zfBD*P z%ML8Ga1?(i);mdUy45w?2d5KGCQHxw$nZHi?xXOW{3u1P>qQzNK+O!Eu6{1-oD!M< D6}BRE literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/icons/icon_template.svg b/build/documentation/api/img/icons/icon_template.svg new file mode 100644 index 00000000..b0428aa4 --- /dev/null +++ b/build/documentation/api/img/icons/icon_template.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + Co + + diff --git a/build/documentation/api/img/icons/interface.png b/build/documentation/api/img/icons/interface.png new file mode 100644 index 0000000000000000000000000000000000000000..51a3a1762db628e8cbbfb4d933a74b4d962d2d7e GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR40E|;Z~{{z_~j>MQR++0q{n_jdZ_~Xzv)82ln zir1^4FSoop)7kP4q||D^oYExqqT%4L-+qnX2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4|3mlps%(3Z75trJZsonk=m!SRtUbjIcd*Gd{GD-MU&5kK`Fd$; z&qe*M;R)u)+B55zu54SYqS>Xy$aOeCxaR(R@13(xM|fE^lFf7PnUNSzTjBx@u1_}0S82W4^{;r-{cRJTTl!v}kb2YK z*1sl?dBGmby>EB*DR3}+u*rYhnEoKO=X=4viDB0(R!$ZFviy;n_U!uqz48-dSM>2+ S-W3cC0R~T3KbLh*2~7ZLUYG9x literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/icons/ok.png b/build/documentation/api/img/icons/ok.png new file mode 100644 index 0000000000000000000000000000000000000000..39f287ab19b8bcdc156ea56355a95290d04f0ee8 GIT binary patch literal 3685 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 AIsgCw literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/icons/search.gif b/build/documentation/api/img/icons/search.gif new file mode 100644 index 0000000000000000000000000000000000000000..eef46fc9ee10547bfa2da348f81b4c83f19e65a4 GIT binary patch literal 152 zcmZ?wbhEHb6krfw*v!MQVZ+APuU|iW_~^rj4_mixJ96acuV25;ojZ5^`i(nx?(W*P zd;k6e|NsAIfC0syEQ|~cJPbM@0gxFCEUptydamAU5nbG%&zz z##7bH4$=1vId^*V*v!xR>*{?7mqKrCnmdg!}G z=IXm8Sn&!;akH?purU1n%JB2k%b%|wU4DOV*XpD9FQ1(YRJQ}B0U&^o4e)SH>*-Ur zh)`kY;$&s`_k)2EsF{J8m4Sm#kV96(KvF=6-{ZWnu*|swyBJ`G00a;d%-Q;G(RnJC zk*X~0{H%Zf{A2k0_b@F4v6je+t14+fASCR#!a*Y7?B`u`upwYzT_j5PRxk@1k>@6WFcf574M53UU$ zfM5nZ{PpG4FOc(@{(fdKQRiUz`t=9HgNKh8zJB|~V5B3;@aO9@i00pa89smd@*SEs z7ytqYX29h)kFR`S`1=Lu?N1E0y_w^~*-1fljz_B$LUvK}k?BNXe#Y!m=zM!!V#}8bncK5m;8VP zw86G*RI63?Cd%b9bX|ueNlZ|wR6rj|r_)VIP@r2imh3?SN+^{|kY%~8B{maJ@F*OK z&VH9LwOeGt#DRjj0~v~8`>iO7!Ybi;zE$va`A^T#yW`y44;k^#O~K5*jD=qcUhPSc zvyy~q;5H_1WT1l~cqje9yfa+l!hu6xjdOJ8s;8E^+=QQ$tw p?%p!Hy#YapB=@+^9(46X{{RQg%9y;OKjr`c002ovPDHLkV1g7l326WT literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/icons/visibility_private.png b/build/documentation/api/img/icons/visibility_private.png new file mode 100644 index 0000000000000000000000000000000000000000..386dc2d879d20cf85e4eeaaeb29e66bfe8398995 GIT binary patch literal 3433 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 literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/iviewer/grab.cur b/build/documentation/api/img/iviewer/grab.cur new file mode 100644 index 0000000000000000000000000000000000000000..ef540be09383a215ba21287683ae956b74a6dbbf GIT binary patch literal 1150 zcmeHEF%H8Z3_L;+LM2k9N*yv~>~H#wK9i4B>Jy?)*;1Rr5Mf~HSVzWizBA$iDEg)e zv@Up@fGdC-B|(IIaVjw`XMnR4do4(}ceLED$#?I4PhZt?V;F{(zNyX4aU6>oTI<~I zR%1+|Z@pO>D9unx@mz^sV2R6KAHrH&a3w(Uah_+1dcf$ic$W0J$AsEGc`x}F-{G8# oT0W#ZA~$;zN&n?%4r~@-v(K$0B;Q#;t literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/iviewer/hand.cur b/build/documentation/api/img/iviewer/hand.cur new file mode 100644 index 0000000000000000000000000000000000000000..1a5bafb5263fd4937dda4098b04aa5c70e2de924 GIT binary patch literal 1150 zcma)3OKyWe4E694LIn}22q6~8?0U4`qB$BzVUYuLnN^5A#g-vqrbZ8co}UNC0FIu^ z1?Y|NodI+J@I{~!RsQPaynTKEFe0{|*)R-iM9cJuPktQ*F&}vmxJX7;nU}sFz|xzG*A)o1}vy~Np8!oh{{D) z3FWrSE(G-lOIo^%@l%Jh z7d(bKZD(=f(+rDu3Ibk!p~fAzvAEw(G5oFaf>VGX;I$X`=G^#MhKzfwaaX++^R_aG z{23g@-KfbsV!rlS8y~jNpC$Q98001E5Sq?VpxukSs-?)+t$^aeGL+RsprA4wk<#_> z_+u(WTiH*vZ^%;_bKH_BUEq}jd#?-l#9J=q_v{?VaI4}Q9JQ|FoaxO4M#r~&(9l-@ga5_qddH0^Pp)3D%%13U()$KPZ9mfuKHeN zh|FV%AcKd9$Xte~JpHr7ISdEsS=dbylRpV}b%EG*(H$Zm7BrYE89CoGzCv2mgg*7U?}T-eQj1 z{ctQepE}YD%L6}S{pbtWcxoXGX*qRvIs~7NleuJ1rI2sTU9}wgEO}#naM{Mwl$wh8u zCnBy@;!tLlFk2ANZy*yRh*u1IjEu7sgd^u~j?-pP>cuPS5S69F5h60HO2`84nde#W zyHhV;*NN!tY8*EZeXCkX$LB3TNWEh+HIj>(aWc0CrwBgBQY@5_fO(q}ggUVHfHYwh z33cBmty=DP=A9=gECUXndMm_NP*e}Z-LCDyS)!}~n7b*S3$R(WUj{y!TOYyebROJ- zFF$p&>5+Q7DfKeS+K_mst_KprM8H(Hy%~al3{|Z#A5JZTYe-7!V4F>!)KgSFrn=vN z3kCIkDE(K!G*^RwzlwE`Dy#7rUC1u2#kz=0tng2mHP|cZPQ4qN4qPSy<|wW2D5KC{MlR z;>)=A5V)!Cz;#udS#FfKqnHHD=_R1Ptpjzf{nOgnDXf!ZtKqUo3Ky}YM}T&xUI8_p z+{#DD)pj7q40-gM-UA6eVt~J6Ck37*j6+@9f{jOSVfEgWC}V(*7I~i&Dx8uU4S&P_ z;3=qW>uyHVjD_fF#+pz$KVvi(@T$|6gmQ;1NkX6Jb)Y}^@BGWy!Sjrgf9<#ho=bDz zCj-9w{fH|?2J}+O500000NkvXXu0mjf*RRDb literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/iviewer/iviewer.rotate_right.png b/build/documentation/api/img/iviewer/iviewer.rotate_right.png new file mode 100644 index 0000000000000000000000000000000000000000..7a6c829871d058af5a5ca0ac67256c259f84c5ac GIT binary patch literal 1482 zcmV;*1vUDKP)W@q8L24va@vW@P7*!=(&yIADtgIo?`IW@@z#oP%kAO5~e4>aSvdau$keO zelrxe7h>a?XEPGL-8ZvUK7S5JxO_SC%cam%h9U3nOynA8Bd1~p@(p_slER=;FN42~ zVT$Cx%L&IBfqkNPU0Q$wV<=M8^Ktsd`-seX8%Hx4(Mza9RSeQph6Cvg*A2_?bs*!Z zJm9Mh7vz)H#bKgf96Z*=%6lrx!F>}8+<9p(ZW^~EGIuaSuQBYWfCsY}!gCl75#iYs zn4X1YwmkE{L{qbYU7_|vC;44Kc>_>d53G;Ofy>H6K72&Q1n)K0hYkOJ{}5yueQ_kO zAEZ3kO@`uTdQ^;QD4P$Xc-46$f7y>g|g44T+ z#BgE=@!>Z#-vKoL6Wa&pE*R*#HWno`0s)tGNL1G$LZyexFDGPt0qahH^Hl0tOywX% zlsY1!jA8k4hEa>zCTrlAtqC<~Car`X>shKzaMo5pP+|!}lx4#8x7#jb=yVHAyecTTC4J8t z#9H#H1x)ab5$qRn{T_~Gwh%$&8k>4#Nl^>etY1&RH*c@JV*VdWES08K(6hJ3ua1F+ z1Vqx@pUkersqB_Ip|BQ5mEtYg?Pld26u-(ZDhIXZN8p8vpywZqUmXq21K`XJ6VBRD zSPjgUh_hsuo0Zq@#H52sg=lQDK%p}U0=)MqxPXrz3y|HcLaYr6jTyT{TGH;2&kl$g zvn(tPnZ+iUo13A~-oxKTMnQmAi+~YaKrsopkYC+_iv!`6FZ*8at59p?CSTLD^ce@1hVDp0-#Q zq7i&EGSIAWEAo-(3@vR~e8qHMf3DS%&Pzg-H4FABh2HRK5QhTu_A0SBL~)<~@sXQv zl!l*(`MH4my)*cGH#$9gu8S$5cCU4I9uNy}^C|I;^|0b5vYngtVB^%;d7vlsx1OAw ktS2S0?VM~5JkO{63m1~IVD>3BuK)l507*qoM6N<$f)6RO6951J literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/iviewer/iviewer.zoom_fit.png b/build/documentation/api/img/iviewer/iviewer.zoom_fit.png new file mode 100644 index 0000000000000000000000000000000000000000..364e01d90eae19584713851314629f2468198e9e GIT binary patch literal 1252 zcmbVMZD`zN9M7nO!F>6)Qu>rmKTa$KDx31r-tX6e<%`(6Krd_QfiW`8t`1_@uq7ekl83AbH+? zzu*7$$#_?1`>KY!8VG_|C2bSZcx-mx`sMihAai~i59?7fi@MD`D#97s?^ptvbD@%0UaWlEb9Y?!POak>Kac>j_lvC`$F%JGkXW>_ZEGx zJom!Kv#(7V2O9tK-kSZb!BUHpo@HF_;W5I?7`%^kn|fV6LyKC%38?;(5V z!PU9ZKS#&d``e%Ktf-E%=q0M&EZqyy}ir$_H&JcW2fJ{{PgiX z8-IUUIXQgrq&9v}_F_|k9sDEvsw97zUz^v|wk^6~k{(E}g+-F{ISKr))j<47BXr41~e0blAr&bSs z|IrSo^7@evzS-=(@x`Huqc2r99GkQ^PabxeDqKE2-7j>wsvG2m_N{Pyfo(Z~3KXY?;^Pc&YH??aJsCHEo`3 w8eZ!(AMJatv3kpyYro>2$M)>r+u)qoRbjGiisBQYX$xZ(3D5f)$iQF?09S=3^#A|> literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/iviewer/iviewer.zoom_in.png b/build/documentation/api/img/iviewer/iviewer.zoom_in.png new file mode 100644 index 0000000000000000000000000000000000000000..78993327c62ddd64e7fe33bc1b0d469ef9e17f30 GIT binary patch literal 1420 zcmbVMeM}o=96n$mLI`O1*jPqxokAS8_t9QIP6}&#?I^6YLL;DzakN*s!1Zp|0}9Rz z8rh;F0cBg38IU39T#zkeLnml8hzMCSG?@^xXdOBYVGI|HL|oz(DEbH4A6|0zem&3g z`+V;WTfxD&nA8{m0OHKKM4>pQ1>fi>@%sWi*eedZ1Y?O%#JYqAlBWQjldYscGecHU zg%s&*JUU5b0YHS4wwDMcmP5FMWn^R!Bl9wx$OeF{94|*YYA6A$q^fAQR`OuPF9B(% zR#J>vU<+rUs_EP&o+@f8usfP+92%!2CmYQ2;-UaU2_)!cYTX{(tCg(l;^I8G4N1Ut zh)|=IY&cb7v4IAbr$9^wOC7Kh29<~mkt? zy6{56v}sFRX(iQyz~K<#uSL*ic3n>tk$HCK_ zK(lTzs7O|_b%ItRdb$w;!&xj_!fwxIqQsOzUXp_l84NK@Fs^m9M<}HJbz@t!$KJ?M zP$A`E>v)G)57)jBS6;_)Fv2Ks*P|kY8`^A2u!ZfsWAnHVJ68Y*ZF@k28qrD)nZSf_1^Pw#| z@pZkmCA&G}0&7bcjq%x*?aRCV3irha4o~M_DArx{=C$ijm7gxpJfn{2L~$I+EADGSEAJts^bthXdZ0!+7(pGrKca+s`)MokNH6@80m`S3a@u zY1ygFvFkgB8j(NleZ>ubn=|IJ|7-yHzY}KZV-M0lk+#l6X1~TQy|p*uWp8(@{ii>t zUM%g1pU@A_-dyI62l_3g1J;f*Z-2$!(N|(ifOlu2-fw+1YIXRfE0Nik_Z$MUT=6@` he~f-qo>Y;tmQ(?tGoVp(DLyXve>58lh(UdY?;kaa{Rsd7 literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/iviewer/iviewer.zoom_in2.gif b/build/documentation/api/img/iviewer/iviewer.zoom_in2.gif new file mode 100644 index 0000000000000000000000000000000000000000..5d596181627a30344f9783d466ce0558279fe729 GIT binary patch literal 90 zcmZ?wbhEHblwpuzXkcUjg8%>j>wsvG2m_O4Pyfo(Z}}I`;fT1UbHL~G(^^jrxfIDc qOSLxju^l&BbLLyj{a>m(=kzlMwFoEmw|glD9`i8f>~-Q|um%7;9UyH0 literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/iviewer/iviewer.zoom_out.png b/build/documentation/api/img/iviewer/iviewer.zoom_out.png new file mode 100644 index 0000000000000000000000000000000000000000..893f3502baaab667354fe8b560c1712b72630836 GIT binary patch literal 1416 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{T%CB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%s|1+P|wiV z#N6CmN5ROz&_Lh7NZ-&%*U;R`*vQJjKmiJrfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8EkR}&8R-I5=oVMzl_XZ^<`pZ$OmImpPA){ffi_eM3D1{oGuTzrd=COM+4n&cLd=IHa;5RX-@T zIKQ+g85kdF$}r8qu)}W=NFmTQR{lkqz(`5Vami0E%}vcK@pQ3O0?O#6WTsddyBS)T zxj4DGI+;7U8WbpSnwXlJx+y{RrjQe2`as9%gOUbPQh^Bp(;tWlPxwF%JnN+90rN`{ zFk|eTuyZ2=1LH1F7srr_TYIJ*^g8Sy&?e2@*d%abWdMgri<5t&U4#0<`~ZPHTulKV zL_SFVVrt@l5PQLUVYuUp3a@^r?zky&+EXok@RH&z@w!8r$f$z%0{cUx;M)M%(BO@dlSAr|x|-`3zUuyW0)IVtW>|s>WVT?mGEc zSkr=`cGH2CXUi731dH|WWa9iWg>~1jL@c(3*I%OB-d`n9ld0_~{X@e~VM+?bvqa&xDF~4=3Dc{-t;PQB<+c zv78v6y_Q$sW5p8UNtB8n}}+(%+^^VTDLxDs_M@V zktZgdHP!#l9(Qv}igT01!>vuNAL^777;7#{%n;%?`4GGKfzXddg$9fTvuy=L>XpA# emo~({32$Iz;FK4L4Ckl>myMpTelF{r5}E)fw)-Uj literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/iviewer/iviewer.zoom_out2.gif b/build/documentation/api/img/iviewer/iviewer.zoom_out2.gif new file mode 100644 index 0000000000000000000000000000000000000000..77ec19af216c5525438e73e4fafef1ce08db3cf3 GIT binary patch literal 69 zcmZ?wbhEHblwpuzXkcUjg8%>j>wsvG2m_N!Pyfo(Z}}I`*>bCU^SwRQTrH10rZprj VQ(Lv|A^Y)9KG(nX7PB%~0{{a@8tMQ5 literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/iviewer/iviewer.zoom_zero.png b/build/documentation/api/img/iviewer/iviewer.zoom_zero.png new file mode 100644 index 0000000000000000000000000000000000000000..c981db6d690774d0c2e67e21c9081d5c89b5fd2d GIT binary patch literal 1091 zcmbVL&ui0A9M4pSOy+USDH`Jt54L&lWo?(ZTAQSq1v^VuUA;)t~d_LcwSBo>#!$V_3 z9LEjkPwFMM?vLJ`gY0_@JiN=6Jv3LLv!qU2W`Mb@O=_6WyXHJDVbfl^_!>`f+;-b3 zS7@bhO0kF=HzS*P+w~cm6!@+QT}TTXPE`s;ULyhK6LAo; zKoamt7>CkCDwR6QBLIO2kO)x>rW6S&0Pwv>U}}L~S4z6k(_*Kz(4f>;M6uOs#amLG z1oI-4WjW$ND8?*e;gUzqcFYS8^%-;=T7lzJhj@I%Xx2!RrUmBdMhLE7C~OjYVJ}fE zWn$a(MHmO7>qc>PtwUPEf85y8IxH{wSS;a?Gy{v(qkgClX1V*fP-MuwQBDUAD~h?O z6RYWBkLLBX!2ZN-$5tc*P9}BL$f+qc2OyjTdQR0O9U94`B&o2^u@x4nAeBw1(2x=n z5avKO31v+Nl7u7!=(60$=Dm=bo`w6m4%6*n!9THz7GRT-piIbOzXOU5LP^*lKCjIt z_&LY3Nh^$svk|L~1LqR9jexj(H@k|ng?bW90+iEJ2GWfvYE_c6auz`iY1tG)S)qru z|0iQ2b4H9>hb!)51ol8qidf>uee2NcllE7&Y7PpcX!=7_qbu-x&Nqo^YXsS zx4psB1L(rH2OVv_Ry|wWf8@aTYwPTIZ{+>+x4F)XFBxU;`RVIF##f(pxPd|L)0^?x S8}D{hqp{BCX7q<@b>%mi3|d_P literal 0 HcmV?d00001 diff --git a/build/documentation/api/img/iviewer/iviewer.zoom_zero2.gif b/build/documentation/api/img/iviewer/iviewer.zoom_zero2.gif new file mode 100644 index 0000000000000000000000000000000000000000..e56c670fe62062458276fab5512701433b37af4e GIT binary patch literal 98 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 literal 0 HcmV?d00001 diff --git a/build/documentation/api/index.html b/build/documentation/api/index.html new file mode 100644 index 00000000..e48c5d81 --- /dev/null +++ b/build/documentation/api/index.html @@ -0,0 +1,164 @@ + + + + + + Gallery PHP code documentation + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+

Gallery PHP code documentation

+

Documentation

+
+ +
+
+
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ + + + diff --git a/build/documentation/api/js/SVGPan.js b/build/documentation/api/js/SVGPan.js new file mode 100644 index 00000000..4966b999 --- /dev/null +++ b/build/documentation/api/js/SVGPan.js @@ -0,0 +1,232 @@ +/** + * SVGPan library 1.2 - phpDocumentor1 + * ==================== + * + * Given an unique existing element with id "viewport", including the + * the library into any SVG adds the following capabilities: + * + * - Mouse panning + * - Mouse zooming (using the wheel) + * - Object dargging + * + * Known issues: + * + * - Zooming (while panning) on Safari has still some issues + * + * Releases: + * + * 1.2 - phpDocumentor1, Fri Apr 08 19:19:00 CET 2011, Mike van Riel + * Increased zoom speed with 20% + * Disabled element moving functionality + * + * 1.2, Sat Mar 20 08:42:50 GMT 2010, Zeng Xiaohui + * Fixed a bug with browser mouse handler interaction + * + * 1.1, Wed Feb 3 17:39:33 GMT 2010, Zeng Xiaohui + * Updated the zoom code to support the mouse wheel on Safari/Chrome + * + * 1.0, Andrea Leofreddi + * First release + * + * This code is licensed under the following BSD license: + * + * Copyright 2009-2010 Andrea Leofreddi . All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY Andrea Leofreddi ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Andrea Leofreddi OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of Andrea Leofreddi. + */ + +var root = document.documentElement; + +var state = 'none', stateTarget, stateOrigin, stateTf; + +setupHandlers(root); + +/** + * Register handlers + */ +function setupHandlers(root){ + setAttributes(root, { + "onmouseup" : "add(evt)", + "onmousedown" : "handleMouseDown(evt)", + "onmousemove" : "handleMouseMove(evt)", + "onmouseup" : "handleMouseUp(evt)", +// "onmouseout" : "handleMouseUp(evt)" // Decomment this to stop the pan functionality when dragging out of the SVG element + }); + + if(navigator.userAgent.toLowerCase().indexOf('webkit') >= 0) + window.addEventListener('mousewheel', handleMouseWheel, false); // Chrome/Safari + else + window.addEventListener('DOMMouseScroll', handleMouseWheel, false); // Others +} + +/** + * Instance an SVGPoint object with given event coordinates. + */ +function getEventPoint(evt) { + var p = root.createSVGPoint(); + + p.x = evt.clientX; + p.y = evt.clientY; + + return p; +} + +/** + * Sets the current transform matrix of an element. + */ +function setCTM(element, matrix) { + var s = "matrix(" + matrix.a + "," + matrix.b + "," + matrix.c + "," + matrix.d + "," + matrix.e + "," + matrix.f + ")"; + + element.setAttribute("transform", s); +} + +/** + * Dumps a matrix to a string (useful for debug). + */ +function dumpMatrix(matrix) { + var s = "[ " + matrix.a + ", " + matrix.c + ", " + matrix.e + "\n " + matrix.b + ", " + matrix.d + ", " + matrix.f + "\n 0, 0, 1 ]"; + + return s; +} + +/** + * Sets attributes of an element. + */ +function setAttributes(element, attributes){ + for (i in attributes) + element.setAttributeNS(null, i, attributes[i]); +} + +/** + * Handle mouse move event. + */ +function handleMouseWheel(evt) { + if(evt.preventDefault) + evt.preventDefault(); + + evt.returnValue = false; + + var svgDoc = evt.target.ownerDocument; + + var delta; + + if(evt.wheelDelta) + delta = evt.wheelDelta / 3600; // Chrome/Safari + else + delta = evt.detail / -90; // Mozilla + + var z = 1 + (delta * 1.2); // Zoom factor: 0.9/1.1 + + var g = svgDoc.getElementById("viewport"); + + var p = getEventPoint(evt); + + p = p.matrixTransform(g.getCTM().inverse()); + + // Compute new scale matrix in current mouse position + var k = root.createSVGMatrix().translate(p.x, p.y).scale(z).translate(-p.x, -p.y); + + setCTM(g, g.getCTM().multiply(k)); + + stateTf = stateTf.multiply(k.inverse()); +} + +/** + * Handle mouse move event. + */ +function handleMouseMove(evt) { + if(evt.preventDefault) + evt.preventDefault(); + + evt.returnValue = false; + + var svgDoc = evt.target.ownerDocument; + + var g = svgDoc.getElementById("viewport"); + + if(state == 'pan') { + // Pan mode + var p = getEventPoint(evt).matrixTransform(stateTf); + + setCTM(g, stateTf.inverse().translate(p.x - stateOrigin.x, p.y - stateOrigin.y)); + } else if(state == 'move') { + // Move mode + var p = getEventPoint(evt).matrixTransform(g.getCTM().inverse()); + + setCTM(stateTarget, root.createSVGMatrix().translate(p.x - stateOrigin.x, p.y - stateOrigin.y).multiply(g.getCTM().inverse()).multiply(stateTarget.getCTM())); + + stateOrigin = p; + } +} + +/** + * Handle click event. + */ +function handleMouseDown(evt) { + if(evt.preventDefault) + evt.preventDefault(); + + evt.returnValue = false; + + var svgDoc = evt.target.ownerDocument; + + var g = svgDoc.getElementById("viewport"); + +// if(evt.target.tagName == "svg") { + // Pan mode + state = 'pan'; + + stateTf = g.getCTM().inverse(); + + stateOrigin = getEventPoint(evt).matrixTransform(stateTf); +// } else { + // Move mode +// state = 'move'; +// +// stateTarget = evt.target; +// +// stateTf = g.getCTM().inverse(); +// +// stateOrigin = getEventPoint(evt).matrixTransform(stateTf); +// } +} + +/** + * Handle mouse button release event. + */ +function handleMouseUp(evt) { + if(evt.preventDefault) + evt.preventDefault(); + + evt.returnValue = false; + + var svgDoc = evt.target.ownerDocument; + + if(state == 'pan' || state == 'move') { + // Quit pan mode + state = ''; + } +} + diff --git a/build/documentation/api/js/bootstrap.js b/build/documentation/api/js/bootstrap.js new file mode 100644 index 00000000..c832ccb2 --- /dev/null +++ b/build/documentation/api/js/bootstrap.js @@ -0,0 +1,1722 @@ +/* =================================================== + * bootstrap-transition.js v2.0.0 + * 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( $ ) { + + $(function () { + + "use strict" + + /* CSS TRANSITION SUPPORT (https://gist.github.com/373874) + * ======================================================= */ + + $.support.transition = (function () { + var thisBody = document.body || document.documentElement + , thisStyle = thisBody.style + , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined + + return support && { + end: (function () { + var transitionEnd = "TransitionEnd" + if ( $.browser.webkit ) { + transitionEnd = "webkitTransitionEnd" + } else if ( $.browser.mozilla ) { + transitionEnd = "transitionend" + } else if ( $.browser.opera ) { + transitionEnd = "oTransitionEnd" + } + return transitionEnd + }()) + } + })() + + }) + +}( window.jQuery ) +/* ========================================================== + * bootstrap-alert.js v2.0.0 + * 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" + + /* ALERT CLASS DEFINITION + * ====================== */ + + var dismiss = '[data-dismiss="alert"]' + , Alert = function ( el ) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype = { + + constructor: Alert + + , 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) + $parent.trigger('close') + + e && e.preventDefault() + + $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) + + $parent.removeClass('in') + + function removeElement() { + $parent.remove() + $parent.trigger('closed') + } + + $.support.transition && $parent.hasClass('fade') ? + $parent.on($.support.transition.end, removeElement) : + removeElement() + } + + } + + + /* ALERT PLUGIN DEFINITION + * ======================= */ + + $.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 DATA-API + * ============== */ + + $(function () { + $('body').on('click.alert.data-api', dismiss, Alert.prototype.close) + }) + +}( window.jQuery ) +/* ============================================================ + * bootstrap-button.js v2.0.0 + * 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" + + /* BUTTON PUBLIC CLASS DEFINITION + * ============================== */ + + var Button = function ( element, options ) { + this.$element = $(element) + this.options = $.extend({}, $.fn.button.defaults, options) + } + + Button.prototype = { + + constructor: Button + + , 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) + } + + , toggle: function () { + var $parent = this.$element.parent('[data-toggle="buttons-radio"]') + + $parent && $parent + .find('.active') + .removeClass('active') + + this.$element.toggleClass('active') + } + + } + + + /* BUTTON PLUGIN DEFINITION + * ======================== */ + + $.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 DATA-API + * =============== */ + + $(function () { + $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) { + $(e.target).button('toggle') + }) + }) + +}( window.jQuery ) +/* ========================================================== + * bootstrap-carousel.js v2.0.0 + * 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" + + /* CAROUSEL CLASS DEFINITION + * ========================= */ + + var Carousel = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.carousel.defaults, options) + this.options.slide && this.slide(this.options.slide) + } + + Carousel.prototype = { + + cycle: function () { + this.interval = setInterval($.proxy(this.next, this), this.options.interval) + return this + } + + , to: function (pos) { + var $active = this.$element.find('.active') + , children = $active.parent().children() + , activePos = children.index($active) + , that = this + + if (pos > (children.length - 1) || pos < 0) return + + if (this.sliding) { + return this.$element.one('slid', function () { + that.to(pos) + }) + } + + if (activePos == pos) { + return this.pause().cycle() + } + + return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos])) + } + + , pause: function () { + clearInterval(this.interval) + 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('.active') + , $next = next || $active[type]() + , isCycling = this.interval + , direction = type == 'next' ? 'left' : 'right' + , fallback = type == 'next' ? 'first' : 'last' + , that = this + + this.sliding = true + + isCycling && this.pause() + + $next = $next.length ? $next : this.$element.find('.item')[fallback]() + + if (!$.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger('slide') + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } else { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + this.$element.trigger('slide') + 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) + }) + } + + isCycling && this.cycle() + + return this + } + + } + + + /* CAROUSEL PLUGIN DEFINITION + * ========================== */ + + $.fn.carousel = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('carousel') + , options = typeof option == 'object' && option + if (!data) $this.data('carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (typeof option == 'string' || (option = options.slide)) data[option]() + else data.cycle() + }) + } + + $.fn.carousel.defaults = { + interval: 5000 + } + + $.fn.carousel.Constructor = Carousel + + + /* CAROUSEL DATA-API + * ================= */ + + $(function () { + $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) { + var $this = $(this), href + , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data()) + $target.carousel(options) + e.preventDefault() + }) + }) + +}( window.jQuery ) +/* ============================================================= + * bootstrap-collapse.js v2.0.0 + * 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" + + 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 = this.dimension() + , scroll = $.camelCase(['scroll', dimension].join('-')) + , actives = this.$parent && this.$parent.find('.in') + , hasData + + if (actives && actives.length) { + hasData = actives.data('collapse') + actives.collapse('hide') + hasData || actives.data('collapse', null) + } + + this.$element[dimension](0) + this.transition('addClass', 'show', 'shown') + this.$element[dimension](this.$element[0][scroll]) + + } + + , hide: function () { + var dimension = this.dimension() + this.reset(this.$element[dimension]()) + this.transition('removeClass', 'hide', 'hidden') + this.$element[dimension](0) + } + + , reset: function ( size ) { + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + [dimension](size || 'auto') + [0].offsetWidth + + this.$element.addClass('collapse') + } + + , transition: function ( method, startEvent, completeEvent ) { + var that = this + , complete = function () { + if (startEvent == 'show') that.reset() + that.$element.trigger(completeEvent) + } + + this.$element + .trigger(startEvent) + [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']() + } + + } + + /* COLLAPSIBLE PLUGIN DEFINITION + * ============================== */ + + $.fn.collapse = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('collapse') + , options = 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 + + + /* COLLAPSIBLE DATA-API + * ==================== */ + + $(function () { + $('body').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() + $(target).collapse(option) + }) + }) + +}( window.jQuery ) +/* ============================================================ + * bootstrap-dropdown.js v2.0.0 + * 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" + + /* 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) + , selector = $this.attr('data-target') + , $parent + , isActive + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + $parent.length || ($parent = $this.parent()) + + isActive = $parent.hasClass('open') + + clearMenus() + !isActive && $parent.toggleClass('open') + + return false + } + + } + + function clearMenus() { + $(toggle).parent().removeClass('open') + } + + + /* DROPDOWN PLUGIN DEFINITION + * ========================== */ + + $.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 + + + /* APPLY TO STANDARD DROPDOWN ELEMENTS + * =================================== */ + + $(function () { + $('html').on('click.dropdown.data-api', clearMenus) + $('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle) + }) + +}( window.jQuery ) +/* ========================================================= + * bootstrap-modal.js v2.0.0 + * 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" + + /* MODAL CLASS DEFINITION + * ====================== */ + + var Modal = function ( content, options ) { + this.options = $.extend({}, $.fn.modal.defaults, options) + this.$element = $(content) + .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) + } + + Modal.prototype = { + + constructor: Modal + + , toggle: function () { + return this[!this.isShown ? 'show' : 'hide']() + } + + , show: function () { + var that = this + + if (this.isShown) return + + $('body').addClass('modal-open') + + this.isShown = true + this.$element.trigger('show') + + escape.call(this) + backdrop.call(this, function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + !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') + + transition ? + that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) : + that.$element.trigger('shown') + + }) + } + + , hide: function ( e ) { + e && e.preventDefault() + + if (!this.isShown) return + + var that = this + this.isShown = false + + $('body').removeClass('modal-open') + + escape.call(this) + + this.$element + .trigger('hide') + .removeClass('in') + + $.support.transition && this.$element.hasClass('fade') ? + hideWithTransition.call(this) : + hideModal.call(this) + } + + } + + + /* MODAL PRIVATE METHODS + * ===================== */ + + function hideWithTransition() { + var that = this + , timeout = setTimeout(function () { + that.$element.off($.support.transition.end) + hideModal.call(that) + }, 500) + + this.$element.one($.support.transition.end, function () { + clearTimeout(timeout) + hideModal.call(that) + }) + } + + function hideModal( that ) { + this.$element + .hide() + .trigger('hidden') + + backdrop.call(this) + } + + function backdrop( callback ) { + var that = this + , animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $('');this.target.append(az);az.height(aD);az.width(aA);az.css("top",this.eventCanvas._offsets.top);az.css("left",this.eventCanvas._offsets.left);var aC=L('
');az.append(aC);aC.html(this.noDataIndicator.indicator);var aB=aC.height();var ax=aC.width();aC.height(aB);aC.width(ax);aC.css("top",(aD-aB)/2+"px")})}}this.data=L.extend(true,[],ar);this.parseOptions(ay);if(this.textColor){this.target.css("color",this.textColor)}if(this.fontFamily){this.target.css("font-family",this.fontFamily)}if(this.fontSize){this.target.css("font-size",this.fontSize)}this.title.init();this.legend.init();this._sumy=0;this._sumx=0;this.computePlotData();for(var at=0;at0){for(var aq=au;aq--;){var an=this._plotData[aq][ap][av];if(aw*an>=0){this._plotData[au][ap][av]+=an;this._stackData[au][ap][av]+=an;break}}}}}else{for(var ar=0;ar0){at._prevPlotData=this.series[au-1]._plotData}at._sumy=0;at._sumx=0;for(ar=at.data.length-1;ar>-1;ar--){at._sumy+=at.data[ar][1];at._sumx+=at.data[ar][0]}}};this.populatePlotData=function(au,av){this._plotData=[];this._stackData=[];au._stackData=[];au._plotData=[];var ay={x:[],y:[]};if(this.stackSeries&&!au.disableStack){au._stack=true;var ax=(au._stackAxis==="x")?0:1;var az=L.extend(true,[],au.data);var aA=L.extend(true,[],au.data);var an,am,ao,aw,al;for(var ar=0;ar=0){aA[aq][ax]+=aw}}}for(var at=0;at0){au._prevPlotData=this.series[av-1]._plotData}au._sumy=0;au._sumx=0;for(at=au.data.length-1;at>-1;at--){au._sumy+=au.data[at][1];au._sumx+=au.data[at][0]}};this.getNextSeriesColor=(function(am){var al=0;var an=am.seriesColors;return function(){if(al=0&&an>=0){al.top+=aK;al.bottom+=aK;al.left+=an;al.right+=an}}var am=["top","bottom","left","right"];for(var aB in am){if(this._gridPadding[am[aB]]==null&&al[am[aB]]>0){this._gridPadding[am[aB]]=al[am[aB]]}else{if(this._gridPadding[am[aB]]==null){this._gridPadding[am[aB]]=this._defaultGridPadding[am[aB]]}}}var aA=this._gridPadding;if(this.legend.placement==="outsideGrid"){aA={top:this.title.getHeight(),left:0,right:0,bottom:0};if(this.legend.location==="s"){aA.left=this._gridPadding.left;aA.right=this._gridPadding.right}}ar.xaxis.pack({position:"absolute",bottom:this._gridPadding.bottom-ar.xaxis.getHeight(),left:0,width:this._width},{min:this._gridPadding.left,max:this._width-this._gridPadding.right});ar.yaxis.pack({position:"absolute",top:0,left:this._gridPadding.left-ar.yaxis.getWidth(),height:this._height},{min:this._height-this._gridPadding.bottom,max:this._gridPadding.top});ar.x2axis.pack({position:"absolute",top:this._gridPadding.top-ar.x2axis.getHeight(),left:0,width:this._width},{min:this._gridPadding.left,max:this._width-this._gridPadding.right});for(aH=8;aH>0;aH--){ar[aG[aH-1]].pack({position:"absolute",top:0,right:this._gridPadding.right-az[aH-1]},{min:this._height-this._gridPadding.bottom,max:this._gridPadding.top})}var au=(this._width-this._gridPadding.left-this._gridPadding.right)/2+this._gridPadding.left-ar.yMidAxis.getWidth()/2;ar.yMidAxis.pack({position:"absolute",top:0,left:au,zIndex:9,textAlign:"center"},{min:this._height-this._gridPadding.bottom,max:this._gridPadding.top});this.target.append(this.grid.createElement(this._gridPadding,this));this.grid.draw();var aq=this.series;var aJ=aq.length;for(aH=0,aE=aJ;aHax)?av:ax;var ar=this.series[aw];var aq=this.series[au];if(aq.renderer.smooth){var ap=aq.renderer._smoothedData.slice(0).reverse()}else{var ap=aq.gridData.slice(0).reverse()}if(ar.renderer.smooth){var at=ar.renderer._smoothedData.concat(ap)}else{var at=ar.gridData.concat(ap)}var ao=(an.color!==null)?an.color:this.series[ax].fillColor;var ay=(an.baseSeries!==null)?an.baseSeries:aw;var am=this.series[ay].renderer.shapeRenderer;var al={fillStyle:ao,fill:true,closePath:true};am.draw(ar.shadowCanvas._ctx,at,al)};this.bindCustomEvents=function(){this.eventCanvas._elem.bind("click",{plot:this},this.onClick);this.eventCanvas._elem.bind("dblclick",{plot:this},this.onDblClick);this.eventCanvas._elem.bind("mousedown",{plot:this},this.onMouseDown);this.eventCanvas._elem.bind("mousemove",{plot:this},this.onMouseMove);this.eventCanvas._elem.bind("mouseenter",{plot:this},this.onMouseEnter);this.eventCanvas._elem.bind("mouseleave",{plot:this},this.onMouseLeave);if(this.captureRightClick){this.eventCanvas._elem.bind("mouseup",{plot:this},this.onRightClick);this.eventCanvas._elem.get(0).oncontextmenu=function(){return false}}else{this.eventCanvas._elem.bind("mouseup",{plot:this},this.onMouseUp)}};function ai(av){var au=av.data.plot;var ap=au.eventCanvas._elem.offset();var at={x:av.pageX-ap.left,y:av.pageY-ap.top};var aq={xaxis:null,yaxis:null,x2axis:null,y2axis:null,y3axis:null,y4axis:null,y5axis:null,y6axis:null,y7axis:null,y8axis:null,y9axis:null,yMidAxis:null};var ar=["xaxis","yaxis","x2axis","y2axis","y3axis","y4axis","y5axis","y6axis","y7axis","y8axis","y9axis","yMidAxis"];var al=au.axes;var am,ao;for(am=11;am>0;am--){ao=ar[am-1];if(al[ao].show){aq[ao]=al[ao].series_p2u(at[ao.charAt(0)])}}return{offsets:ap,gridPos:at,dataPos:aq}}function ak(al,am){var aq=am.series;var aW,aU,aT,aO,aP,aJ,aI,aw,au,az,aA,aK;var aS,aX,aQ,ar,aH,aM,aV;var an,aN;for(aT=am.seriesStack.length-1;aT>=0;aT--){aW=am.seriesStack[aT];aO=aq[aW];aV=aO._highlightThreshold;switch(aO.renderer.constructor){case L.jqplot.BarRenderer:aJ=al.x;aI=al.y;for(aU=0;aUaH[0][0]&&aJaH[2][1]&&aIaH[0][0]+aV[0][0]&&aJaH[2][1]&&aI0&&-aI>=0){aw=2*Math.PI-Math.atan(-aI/aJ)}else{if(aJ>0&&-aI<0){aw=-Math.atan(-aI/aJ)}else{if(aJ<0){aw=Math.PI-Math.atan(-aI/aJ)}else{if(aJ==0&&-aI>0){aw=3*Math.PI/2}else{if(aJ==0&&-aI<0){aw=Math.PI/2}else{if(aJ==0&&aI==0){aw=0}}}}}}if(az){aw-=az;if(aw<0){aw+=2*Math.PI}else{if(aw>2*Math.PI){aw-=2*Math.PI}}}au=aO.sliceMargin/180*Math.PI;if(aPaO._innerRadius){for(aU=0;aU0)?aO.gridData[aU-1][1]+au:au;aK=aO.gridData[aU][1];if(aw>aA&&aw0&&-aI>=0){aw=2*Math.PI-Math.atan(-aI/aJ)}else{if(aJ>0&&-aI<0){aw=-Math.atan(-aI/aJ)}else{if(aJ<0){aw=Math.PI-Math.atan(-aI/aJ)}else{if(aJ==0&&-aI>0){aw=3*Math.PI/2}else{if(aJ==0&&-aI<0){aw=Math.PI/2}else{if(aJ==0&&aI==0){aw=0}}}}}}if(az){aw-=az;if(aw<0){aw+=2*Math.PI}else{if(aw>2*Math.PI){aw-=2*Math.PI}}}au=aO.sliceMargin/180*Math.PI;if(aP0)?aO.gridData[aU-1][1]+au:au;aK=aO.gridData[aU][1];if(aw>aA&&aw=ay[0][1]&&aI<=ay[3][1]&&aJ>=at[0]&&aJ<=aE[0]){return{seriesIndex:aO.index,pointIndex:aU,gridData:null,data:aO.data[aU]}}}break;case L.jqplot.LineRenderer:aJ=al.x;aI=al.y;aP=aO.renderer;if(aO.show){if((aO.fill||(aO.renderer.bands.show&&aO.renderer.bands.fill))&&(!am.plugins.highlighter||!am.plugins.highlighter.show)){var ax=false;if(aJ>aO._boundingBox[0][0]&&aJaO._boundingBox[1][1]&&aI=aI||aB[1]=aI){if(aC[0]+(aI-aC[1])/(aB[1]-aC[1])*(aB[0]-aC[0])0)?aN:0;for(var aU=0;aU=aQ[0]-aP._bodyWidth/2&&aJ<=aQ[0]+aP._bodyWidth/2&&aI>=av(aO.data[aU][2])&&aI<=av(aO.data[aU][3])){return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}else{if(!aP.hlc){var av=aO._yaxis.series_u2p;if(aJ>=aQ[0]-aP._tickLength&&aJ<=aQ[0]+aP._tickLength&&aI>=av(aO.data[aU][2])&&aI<=av(aO.data[aU][3])){return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}else{var av=aO._yaxis.series_u2p;if(aJ>=aQ[0]-aP._tickLength&&aJ<=aQ[0]+aP._tickLength&&aI>=av(aO.data[aU][1])&&aI<=av(aO.data[aU][2])){return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}}}else{if(aQ[0]!=null&&aQ[1]!=null){aX=Math.sqrt((aJ-aQ[0])*(aJ-aQ[0])+(aI-aQ[1])*(aI-aQ[1]));if(aX<=an&&(aX<=aS||aS==null)){aS=aX;return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}}}}}break;default:aJ=al.x;aI=al.y;aP=aO.renderer;if(aO.show){aN=aO.markerRenderer.size/2+aO.neighborThreshold;an=(aN>0)?aN:0;for(var aU=0;aU=aQ[0]-aP._bodyWidth/2&&aJ<=aQ[0]+aP._bodyWidth/2&&aI>=av(aO.data[aU][2])&&aI<=av(aO.data[aU][3])){return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}else{if(!aP.hlc){var av=aO._yaxis.series_u2p;if(aJ>=aQ[0]-aP._tickLength&&aJ<=aQ[0]+aP._tickLength&&aI>=av(aO.data[aU][2])&&aI<=av(aO.data[aU][3])){return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}else{var av=aO._yaxis.series_u2p;if(aJ>=aQ[0]-aP._tickLength&&aJ<=aQ[0]+aP._tickLength&&aI>=av(aO.data[aU][1])&&aI<=av(aO.data[aU][2])){return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}}}else{aX=Math.sqrt((aJ-aQ[0])*(aJ-aQ[0])+(aI-aQ[1])*(aI-aQ[1]));if(aX<=an&&(aX<=aS||aS==null)){aS=aX;return{seriesIndex:aW,pointIndex:aU,gridData:aQ,data:aO.data[aU]}}}}}break}}return null}this.onClick=function(an){var am=ai(an);var ap=an.data.plot;var ao=ak(am.gridPos,ap);var al=L.Event("jqplotClick");al.pageX=an.pageX;al.pageY=an.pageY;L(this).trigger(al,[am.gridPos,am.dataPos,ao,ap])};this.onDblClick=function(an){var am=ai(an);var ap=an.data.plot;var ao=ak(am.gridPos,ap);var al=L.Event("jqplotDblClick");al.pageX=an.pageX;al.pageY=an.pageY;L(this).trigger(al,[am.gridPos,am.dataPos,ao,ap])};this.onMouseDown=function(an){var am=ai(an);var ap=an.data.plot;var ao=ak(am.gridPos,ap);var al=L.Event("jqplotMouseDown");al.pageX=an.pageX;al.pageY=an.pageY;L(this).trigger(al,[am.gridPos,am.dataPos,ao,ap])};this.onMouseUp=function(an){var am=ai(an);var al=L.Event("jqplotMouseUp");al.pageX=an.pageX;al.pageY=an.pageY;L(this).trigger(al,[am.gridPos,am.dataPos,null,an.data.plot])};this.onRightClick=function(an){var am=ai(an);var ap=an.data.plot;var ao=ak(am.gridPos,ap);if(ap.captureRightClick){if(an.which==3){var al=L.Event("jqplotRightClick");al.pageX=an.pageX;al.pageY=an.pageY;L(this).trigger(al,[am.gridPos,am.dataPos,ao,ap])}else{var al=L.Event("jqplotMouseUp");al.pageX=an.pageX;al.pageY=an.pageY;L(this).trigger(al,[am.gridPos,am.dataPos,ao,ap])}}};this.onMouseMove=function(an){var am=ai(an);var ap=an.data.plot;var ao=ak(am.gridPos,ap);var al=L.Event("jqplotMouseMove");al.pageX=an.pageX;al.pageY=an.pageY;L(this).trigger(al,[am.gridPos,am.dataPos,ao,ap])};this.onMouseEnter=function(an){var am=ai(an);var ao=an.data.plot;var al=L.Event("jqplotMouseEnter");al.pageX=an.pageX;al.pageY=an.pageY;al.relatedTarget=an.relatedTarget;L(this).trigger(al,[am.gridPos,am.dataPos,null,ao])};this.onMouseLeave=function(an){var am=ai(an);var ao=an.data.plot;var al=L.Event("jqplotMouseLeave");al.pageX=an.pageX;al.pageY=an.pageY;al.relatedTarget=an.relatedTarget;L(this).trigger(al,[am.gridPos,am.dataPos,null,ao])};this.drawSeries=function(an,al){var ap,ao,am;al=(typeof(an)==="number"&&al==null)?an:al;an=(typeof(an)==="object")?an:{};if(al!=u){ao=this.series[al];am=ao.shadowCanvas._ctx;am.clearRect(0,0,am.canvas.width,am.canvas.height);ao.drawShadow(am,an,this);am=ao.canvas._ctx;am.clearRect(0,0,am.canvas.width,am.canvas.height);ao.draw(am,an,this);if(ao.renderer.constructor==L.jqplot.BezierCurveRenderer){if(al660)?ah[aj]*0.85:0.73*ah[aj]+90;ah[aj]=parseInt(ah[aj],10);(ah[aj]>255)?255:ah[aj]}ah[3]=0.3+0.35*al[3];ak.push("rgba("+ah[0]+","+ah[1]+","+ah[2]+","+ah[3]+")")}}else{var al=L.jqplot.getColorComponents(ai);var ah=[al[0],al[1],al[2]];var an=ah[0]+ah[1]+ah[2];for(var aj=0;aj<3;aj++){ah[aj]=(an>660)?ah[aj]*0.85:0.73*ah[aj]+90;ah[aj]=parseInt(ah[aj],10);(ah[aj]>255)?255:ah[aj]}ah[3]=0.3+0.35*al[3];ak="rgba("+ah[0]+","+ah[1]+","+ah[2]+","+ah[3]+")"}return ak};L.jqplot.ColorGenerator=function(ai){ai=ai||L.jqplot.config.defaultColors;var ah=0;this.next=function(){if(ah0){return ai[ah--]}else{ah=ai.length-1;return ai[ah]}};this.get=function(ak){var aj=ak-ai.length*Math.floor(ak/ai.length);return ai[aj]};this.setColors=function(aj){ai=aj};this.reset=function(){ah=0};this.getIndex=function(){return ah};this.setIndex=function(aj){ah=aj}};L.jqplot.hex2rgb=function(aj,ah){aj=aj.replace("#","");if(aj.length==3){aj=aj.charAt(0)+aj.charAt(0)+aj.charAt(1)+aj.charAt(1)+aj.charAt(2)+aj.charAt(2)}var ai;ai="rgba("+parseInt(aj.slice(0,2),16)+", "+parseInt(aj.slice(2,4),16)+", "+parseInt(aj.slice(4,6),16);if(ah){ai+=", "+ah}ai+=")";return ai};L.jqplot.rgb2hex=function(am){var aj=/rgba?\( *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *(?:, *[0-9.]*)?\)/;var ah=am.match(aj);var al="#";for(var ak=1;ak<4;ak++){var ai;if(ah[ak].search(/%/)!=-1){ai=parseInt(255*ah[ak]/100,10).toString(16);if(ai.length==1){ai="0"+ai}}else{ai=parseInt(ah[ak],10).toString(16);if(ai.length==1){ai="0"+ai}}al+=ai}return al};L.jqplot.normalize2rgb=function(ai,ah){if(ai.search(/^ *rgba?\(/)!=-1){return ai}else{if(ai.search(/^ *#?[0-9a-fA-F]?[0-9a-fA-F]/)!=-1){return L.jqplot.hex2rgb(ai,ah)}else{throw new Error("Invalid color spec")}}};L.jqplot.getColorComponents=function(am){am=L.jqplot.colorKeywordMap[am]||am;var ak=L.jqplot.normalize2rgb(am);var aj=/rgba?\( *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *, *([0-9]{1,3}\.?[0-9]*%?) *,? *([0-9.]* *)?\)/;var ah=ak.match(aj);var ai=[];for(var al=1;al<4;al++){if(ah[al].search(/%/)!=-1){ai[al-1]=parseInt(255*ah[al]/100,10)}else{ai[al-1]=parseInt(ah[al],10)}}ai[3]=parseFloat(ah[4])?parseFloat(ah[4]):1;return ai};L.jqplot.colorKeywordMap={aliceblue:"rgb(240, 248, 255)",antiquewhite:"rgb(250, 235, 215)",aqua:"rgb( 0, 255, 255)",aquamarine:"rgb(127, 255, 212)",azure:"rgb(240, 255, 255)",beige:"rgb(245, 245, 220)",bisque:"rgb(255, 228, 196)",black:"rgb( 0, 0, 0)",blanchedalmond:"rgb(255, 235, 205)",blue:"rgb( 0, 0, 255)",blueviolet:"rgb(138, 43, 226)",brown:"rgb(165, 42, 42)",burlywood:"rgb(222, 184, 135)",cadetblue:"rgb( 95, 158, 160)",chartreuse:"rgb(127, 255, 0)",chocolate:"rgb(210, 105, 30)",coral:"rgb(255, 127, 80)",cornflowerblue:"rgb(100, 149, 237)",cornsilk:"rgb(255, 248, 220)",crimson:"rgb(220, 20, 60)",cyan:"rgb( 0, 255, 255)",darkblue:"rgb( 0, 0, 139)",darkcyan:"rgb( 0, 139, 139)",darkgoldenrod:"rgb(184, 134, 11)",darkgray:"rgb(169, 169, 169)",darkgreen:"rgb( 0, 100, 0)",darkgrey:"rgb(169, 169, 169)",darkkhaki:"rgb(189, 183, 107)",darkmagenta:"rgb(139, 0, 139)",darkolivegreen:"rgb( 85, 107, 47)",darkorange:"rgb(255, 140, 0)",darkorchid:"rgb(153, 50, 204)",darkred:"rgb(139, 0, 0)",darksalmon:"rgb(233, 150, 122)",darkseagreen:"rgb(143, 188, 143)",darkslateblue:"rgb( 72, 61, 139)",darkslategray:"rgb( 47, 79, 79)",darkslategrey:"rgb( 47, 79, 79)",darkturquoise:"rgb( 0, 206, 209)",darkviolet:"rgb(148, 0, 211)",deeppink:"rgb(255, 20, 147)",deepskyblue:"rgb( 0, 191, 255)",dimgray:"rgb(105, 105, 105)",dimgrey:"rgb(105, 105, 105)",dodgerblue:"rgb( 30, 144, 255)",firebrick:"rgb(178, 34, 34)",floralwhite:"rgb(255, 250, 240)",forestgreen:"rgb( 34, 139, 34)",fuchsia:"rgb(255, 0, 255)",gainsboro:"rgb(220, 220, 220)",ghostwhite:"rgb(248, 248, 255)",gold:"rgb(255, 215, 0)",goldenrod:"rgb(218, 165, 32)",gray:"rgb(128, 128, 128)",grey:"rgb(128, 128, 128)",green:"rgb( 0, 128, 0)",greenyellow:"rgb(173, 255, 47)",honeydew:"rgb(240, 255, 240)",hotpink:"rgb(255, 105, 180)",indianred:"rgb(205, 92, 92)",indigo:"rgb( 75, 0, 130)",ivory:"rgb(255, 255, 240)",khaki:"rgb(240, 230, 140)",lavender:"rgb(230, 230, 250)",lavenderblush:"rgb(255, 240, 245)",lawngreen:"rgb(124, 252, 0)",lemonchiffon:"rgb(255, 250, 205)",lightblue:"rgb(173, 216, 230)",lightcoral:"rgb(240, 128, 128)",lightcyan:"rgb(224, 255, 255)",lightgoldenrodyellow:"rgb(250, 250, 210)",lightgray:"rgb(211, 211, 211)",lightgreen:"rgb(144, 238, 144)",lightgrey:"rgb(211, 211, 211)",lightpink:"rgb(255, 182, 193)",lightsalmon:"rgb(255, 160, 122)",lightseagreen:"rgb( 32, 178, 170)",lightskyblue:"rgb(135, 206, 250)",lightslategray:"rgb(119, 136, 153)",lightslategrey:"rgb(119, 136, 153)",lightsteelblue:"rgb(176, 196, 222)",lightyellow:"rgb(255, 255, 224)",lime:"rgb( 0, 255, 0)",limegreen:"rgb( 50, 205, 50)",linen:"rgb(250, 240, 230)",magenta:"rgb(255, 0, 255)",maroon:"rgb(128, 0, 0)",mediumaquamarine:"rgb(102, 205, 170)",mediumblue:"rgb( 0, 0, 205)",mediumorchid:"rgb(186, 85, 211)",mediumpurple:"rgb(147, 112, 219)",mediumseagreen:"rgb( 60, 179, 113)",mediumslateblue:"rgb(123, 104, 238)",mediumspringgreen:"rgb( 0, 250, 154)",mediumturquoise:"rgb( 72, 209, 204)",mediumvioletred:"rgb(199, 21, 133)",midnightblue:"rgb( 25, 25, 112)",mintcream:"rgb(245, 255, 250)",mistyrose:"rgb(255, 228, 225)",moccasin:"rgb(255, 228, 181)",navajowhite:"rgb(255, 222, 173)",navy:"rgb( 0, 0, 128)",oldlace:"rgb(253, 245, 230)",olive:"rgb(128, 128, 0)",olivedrab:"rgb(107, 142, 35)",orange:"rgb(255, 165, 0)",orangered:"rgb(255, 69, 0)",orchid:"rgb(218, 112, 214)",palegoldenrod:"rgb(238, 232, 170)",palegreen:"rgb(152, 251, 152)",paleturquoise:"rgb(175, 238, 238)",palevioletred:"rgb(219, 112, 147)",papayawhip:"rgb(255, 239, 213)",peachpuff:"rgb(255, 218, 185)",peru:"rgb(205, 133, 63)",pink:"rgb(255, 192, 203)",plum:"rgb(221, 160, 221)",powderblue:"rgb(176, 224, 230)",purple:"rgb(128, 0, 128)",red:"rgb(255, 0, 0)",rosybrown:"rgb(188, 143, 143)",royalblue:"rgb( 65, 105, 225)",saddlebrown:"rgb(139, 69, 19)",salmon:"rgb(250, 128, 114)",sandybrown:"rgb(244, 164, 96)",seagreen:"rgb( 46, 139, 87)",seashell:"rgb(255, 245, 238)",sienna:"rgb(160, 82, 45)",silver:"rgb(192, 192, 192)",skyblue:"rgb(135, 206, 235)",slateblue:"rgb(106, 90, 205)",slategray:"rgb(112, 128, 144)",slategrey:"rgb(112, 128, 144)",snow:"rgb(255, 250, 250)",springgreen:"rgb( 0, 255, 127)",steelblue:"rgb( 70, 130, 180)",tan:"rgb(210, 180, 140)",teal:"rgb( 0, 128, 128)",thistle:"rgb(216, 191, 216)",tomato:"rgb(255, 99, 71)",turquoise:"rgb( 64, 224, 208)",violet:"rgb(238, 130, 238)",wheat:"rgb(245, 222, 179)",white:"rgb(255, 255, 255)",whitesmoke:"rgb(245, 245, 245)",yellow:"rgb(255, 255, 0)",yellowgreen:"rgb(154, 205, 50)"};L.jqplot.AxisLabelRenderer=function(ah){L.jqplot.ElemContainer.call(this);this.axis;this.show=true;this.label="";this.fontFamily=null;this.fontSize=null;this.textColor=null;this._elem;this.escapeHTML=false;L.extend(true,this,ah)};L.jqplot.AxisLabelRenderer.prototype=new L.jqplot.ElemContainer();L.jqplot.AxisLabelRenderer.prototype.constructor=L.jqplot.AxisLabelRenderer;L.jqplot.AxisLabelRenderer.prototype.init=function(ah){L.extend(true,this,ah)};L.jqplot.AxisLabelRenderer.prototype.draw=function(ah,ai){if(this._elem){this._elem.emptyForce();this._elem=null}this._elem=L('
');if(Number(this.label)){this._elem.css("white-space","nowrap")}if(!this.escapeHTML){this._elem.html(this.label)}else{this._elem.text(this.label)}if(this.fontFamily){this._elem.css("font-family",this.fontFamily)}if(this.fontSize){this._elem.css("font-size",this.fontSize)}if(this.textColor){this._elem.css("color",this.textColor)}return this._elem};L.jqplot.AxisLabelRenderer.prototype.pack=function(){};L.jqplot.AxisTickRenderer=function(ah){L.jqplot.ElemContainer.call(this);this.mark="outside";this.axis;this.showMark=true;this.showGridline=true;this.isMinorTick=false;this.size=4;this.markSize=6;this.show=true;this.showLabel=true;this.label=null;this.value=null;this._styles={};this.formatter=L.jqplot.DefaultTickFormatter;this.prefix="";this.suffix="";this.formatString="";this.fontFamily;this.fontSize;this.textColor;this.escapeHTML=false;this._elem;this._breakTick=false;L.extend(true,this,ah)};L.jqplot.AxisTickRenderer.prototype.init=function(ah){L.extend(true,this,ah)};L.jqplot.AxisTickRenderer.prototype=new L.jqplot.ElemContainer();L.jqplot.AxisTickRenderer.prototype.constructor=L.jqplot.AxisTickRenderer;L.jqplot.AxisTickRenderer.prototype.setTick=function(ah,aj,ai){this.value=ah;this.axis=aj;if(ai){this.isMinorTick=true}return this};L.jqplot.AxisTickRenderer.prototype.draw=function(){if(this.label===null){this.label=this.prefix+this.formatter(this.formatString,this.value)+this.suffix}var ai={position:"absolute"};if(Number(this.label)){ai.whitSpace="nowrap"}if(this._elem){this._elem.emptyForce();this._elem=null}this._elem=L(document.createElement("div"));this._elem.addClass("jqplot-"+this.axis+"-tick");if(!this.escapeHTML){this._elem.html(this.label)}else{this._elem.text(this.label)}this._elem.css(ai);for(var ah in this._styles){this._elem.css(ah,this._styles[ah])}if(this.fontFamily){this._elem.css("font-family",this.fontFamily)}if(this.fontSize){this._elem.css("font-size",this.fontSize)}if(this.textColor){this._elem.css("color",this.textColor)}if(this._breakTick){this._elem.addClass("jqplot-breakTick")}return this._elem};L.jqplot.DefaultTickFormatter=function(ah,ai){if(typeof ai=="number"){if(!ah){ah=L.jqplot.config.defaultTickFormatString}return L.jqplot.sprintf(ah,ai)}else{return String(ai)}};L.jqplot.PercentTickFormatter=function(ah,ai){if(typeof ai=="number"){ai=100*ai;if(!ah){ah=L.jqplot.config.defaultTickFormatString}return L.jqplot.sprintf(ah,ai)}else{return String(ai)}};L.jqplot.AxisTickRenderer.prototype.pack=function(){};L.jqplot.CanvasGridRenderer=function(){this.shadowRenderer=new L.jqplot.ShadowRenderer()};L.jqplot.CanvasGridRenderer.prototype.init=function(ai){this._ctx;L.extend(true,this,ai);var ah={lineJoin:"miter",lineCap:"round",fill:false,isarc:false,angle:this.shadowAngle,offset:this.shadowOffset,alpha:this.shadowAlpha,depth:this.shadowDepth,lineWidth:this.shadowWidth,closePath:false,strokeStyle:this.shadowColor};this.renderer.shadowRenderer.init(ah)};L.jqplot.CanvasGridRenderer.prototype.createElement=function(ak){var aj;if(this._elem){if(L.jqplot.use_excanvas&&window.G_vmlCanvasManager.uninitElement!==u){aj=this._elem.get(0);window.G_vmlCanvasManager.uninitElement(aj);aj=null}this._elem.emptyForce();this._elem=null}aj=ak.canvasManager.getCanvas();var ah=this._plotDimensions.width;var ai=this._plotDimensions.height;aj.width=ah;aj.height=ai;this._elem=L(aj);this._elem.addClass("jqplot-grid-canvas");this._elem.css({position:"absolute",left:0,top:0});aj=ak.canvasManager.initCanvas(aj);this._top=this._offsets.top;this._bottom=ai-this._offsets.bottom;this._left=this._offsets.left;this._right=ah-this._offsets.right;this._width=this._right-this._left;this._height=this._bottom-this._top;aj=null;return this._elem};L.jqplot.CanvasGridRenderer.prototype.draw=function(){this._ctx=this._elem.get(0).getContext("2d");var at=this._ctx;var aw=this._axes;at.save();at.clearRect(0,0,this._plotDimensions.width,this._plotDimensions.height);at.fillStyle=this.backgroundColor||this.background;at.fillRect(this._left,this._top,this._width,this._height);at.save();at.lineJoin="miter";at.lineCap="butt";at.lineWidth=this.gridLineWidth;at.strokeStyle=this.gridLineColor;var aA,az,ap,aq;var am=["xaxis","yaxis","x2axis","y2axis"];for(var ay=4;ay>0;ay--){var aD=am[ay-1];var ah=aw[aD];var aB=ah._ticks;var ar=aB.length;if(ah.show){if(ah.drawBaseline){var aC={};if(ah.baselineWidth!==null){aC.lineWidth=ah.baselineWidth}if(ah.baselineColor!==null){aC.strokeStyle=ah.baselineColor}switch(aD){case"xaxis":ao(this._left,this._bottom,this._right,this._bottom,aC);break;case"yaxis":ao(this._left,this._bottom,this._left,this._top,aC);break;case"x2axis":ao(this._left,this._bottom,this._right,this._bottom,aC);break;case"y2axis":ao(this._right,this._bottom,this._right,this._top,aC);break}}for(var au=ar;au>0;au--){var an=aB[au-1];if(an.show){var ak=Math.round(ah.u2p(an.value))+0.5;switch(aD){case"xaxis":if(an.showGridline&&this.drawGridlines&&((!an.isMinorTick&&ah.drawMajorGridlines)||(an.isMinorTick&&ah.drawMinorGridlines))){ao(ak,this._top,ak,this._bottom)}if(an.showMark&&an.mark&&((!an.isMinorTick&&ah.drawMajorTickMarks)||(an.isMinorTick&&ah.drawMinorTickMarks))){ap=an.markSize;aq=an.mark;var ak=Math.round(ah.u2p(an.value))+0.5;switch(aq){case"outside":aA=this._bottom;az=this._bottom+ap;break;case"inside":aA=this._bottom-ap;az=this._bottom;break;case"cross":aA=this._bottom-ap;az=this._bottom+ap;break;default:aA=this._bottom;az=this._bottom+ap;break}if(this.shadow){this.renderer.shadowRenderer.draw(at,[[ak,aA],[ak,az]],{lineCap:"butt",lineWidth:this.gridLineWidth,offset:this.gridLineWidth*0.75,depth:2,fill:false,closePath:false})}ao(ak,aA,ak,az)}break;case"yaxis":if(an.showGridline&&this.drawGridlines&&((!an.isMinorTick&&ah.drawMajorGridlines)||(an.isMinorTick&&ah.drawMinorGridlines))){ao(this._right,ak,this._left,ak)}if(an.showMark&&an.mark&&((!an.isMinorTick&&ah.drawMajorTickMarks)||(an.isMinorTick&&ah.drawMinorTickMarks))){ap=an.markSize;aq=an.mark;var ak=Math.round(ah.u2p(an.value))+0.5;switch(aq){case"outside":aA=this._left-ap;az=this._left;break;case"inside":aA=this._left;az=this._left+ap;break;case"cross":aA=this._left-ap;az=this._left+ap;break;default:aA=this._left-ap;az=this._left;break}if(this.shadow){this.renderer.shadowRenderer.draw(at,[[aA,ak],[az,ak]],{lineCap:"butt",lineWidth:this.gridLineWidth*1.5,offset:this.gridLineWidth*0.75,fill:false,closePath:false})}ao(aA,ak,az,ak,{strokeStyle:ah.borderColor})}break;case"x2axis":if(an.showGridline&&this.drawGridlines&&((!an.isMinorTick&&ah.drawMajorGridlines)||(an.isMinorTick&&ah.drawMinorGridlines))){ao(ak,this._bottom,ak,this._top)}if(an.showMark&&an.mark&&((!an.isMinorTick&&ah.drawMajorTickMarks)||(an.isMinorTick&&ah.drawMinorTickMarks))){ap=an.markSize;aq=an.mark;var ak=Math.round(ah.u2p(an.value))+0.5;switch(aq){case"outside":aA=this._top-ap;az=this._top;break;case"inside":aA=this._top;az=this._top+ap;break;case"cross":aA=this._top-ap;az=this._top+ap;break;default:aA=this._top-ap;az=this._top;break}if(this.shadow){this.renderer.shadowRenderer.draw(at,[[ak,aA],[ak,az]],{lineCap:"butt",lineWidth:this.gridLineWidth,offset:this.gridLineWidth*0.75,depth:2,fill:false,closePath:false})}ao(ak,aA,ak,az)}break;case"y2axis":if(an.showGridline&&this.drawGridlines&&((!an.isMinorTick&&ah.drawMajorGridlines)||(an.isMinorTick&&ah.drawMinorGridlines))){ao(this._left,ak,this._right,ak)}if(an.showMark&&an.mark&&((!an.isMinorTick&&ah.drawMajorTickMarks)||(an.isMinorTick&&ah.drawMinorTickMarks))){ap=an.markSize;aq=an.mark;var ak=Math.round(ah.u2p(an.value))+0.5;switch(aq){case"outside":aA=this._right;az=this._right+ap;break;case"inside":aA=this._right-ap;az=this._right;break;case"cross":aA=this._right-ap;az=this._right+ap;break;default:aA=this._right;az=this._right+ap;break}if(this.shadow){this.renderer.shadowRenderer.draw(at,[[aA,ak],[az,ak]],{lineCap:"butt",lineWidth:this.gridLineWidth*1.5,offset:this.gridLineWidth*0.75,fill:false,closePath:false})}ao(aA,ak,az,ak,{strokeStyle:ah.borderColor})}break;default:break}}}an=null}ah=null;aB=null}am=["y3axis","y4axis","y5axis","y6axis","y7axis","y8axis","y9axis","yMidAxis"];for(var ay=7;ay>0;ay--){var ah=aw[am[ay-1]];var aB=ah._ticks;if(ah.show){var ai=aB[ah.numberTicks-1];var al=aB[0];var aj=ah.getLeft();var av=[[aj,ai.getTop()+ai.getHeight()/2],[aj,al.getTop()+al.getHeight()/2+1]];if(this.shadow){this.renderer.shadowRenderer.draw(at,av,{lineCap:"butt",fill:false,closePath:false})}ao(av[0][0],av[0][1],av[1][0],av[1][1],{lineCap:"butt",strokeStyle:ah.borderColor,lineWidth:ah.borderWidth});for(var au=aB.length;au>0;au--){var an=aB[au-1];ap=an.markSize;aq=an.mark;var ak=Math.round(ah.u2p(an.value))+0.5;if(an.showMark&&an.mark){switch(aq){case"outside":aA=aj;az=aj+ap;break;case"inside":aA=aj-ap;az=aj;break;case"cross":aA=aj-ap;az=aj+ap;break;default:aA=aj;az=aj+ap;break}av=[[aA,ak],[az,ak]];if(this.shadow){this.renderer.shadowRenderer.draw(at,av,{lineCap:"butt",lineWidth:this.gridLineWidth*1.5,offset:this.gridLineWidth*0.75,fill:false,closePath:false})}ao(aA,ak,az,ak,{strokeStyle:ah.borderColor})}an=null}al=null}ah=null;aB=null}at.restore();function ao(aH,aG,aE,ax,aF){at.save();aF=aF||{};if(aF.lineWidth==null||aF.lineWidth!=0){L.extend(true,at,aF);at.beginPath();at.moveTo(aH,aG);at.lineTo(aE,ax);at.stroke();at.restore()}}if(this.shadow){var av=[[this._left,this._bottom],[this._right,this._bottom],[this._right,this._top]];this.renderer.shadowRenderer.draw(at,av)}if(this.borderWidth!=0&&this.drawBorder){ao(this._left,this._top,this._right,this._top,{lineCap:"round",strokeStyle:aw.x2axis.borderColor,lineWidth:aw.x2axis.borderWidth});ao(this._right,this._top,this._right,this._bottom,{lineCap:"round",strokeStyle:aw.y2axis.borderColor,lineWidth:aw.y2axis.borderWidth});ao(this._right,this._bottom,this._left,this._bottom,{lineCap:"round",strokeStyle:aw.xaxis.borderColor,lineWidth:aw.xaxis.borderWidth});ao(this._left,this._bottom,this._left,this._top,{lineCap:"round",strokeStyle:aw.yaxis.borderColor,lineWidth:aw.yaxis.borderWidth})}at.restore();at=null;aw=null};L.jqplot.DivTitleRenderer=function(){};L.jqplot.DivTitleRenderer.prototype.init=function(ah){L.extend(true,this,ah)};L.jqplot.DivTitleRenderer.prototype.draw=function(){if(this._elem){this._elem.emptyForce();this._elem=null}var ak=this.renderer;var aj=document.createElement("div");this._elem=L(aj);this._elem.addClass("jqplot-title");if(!this.text){this.show=false;this._elem.height(0);this._elem.width(0)}else{if(this.text){var ah;if(this.color){ah=this.color}else{if(this.textColor){ah=this.textColor}}var ai={position:"absolute",top:"0px",left:"0px"};if(this._plotWidth){ai.width=this._plotWidth+"px"}if(this.fontSize){ai.fontSize=this.fontSize}if(typeof this.textAlign==="string"){ai.textAlign=this.textAlign}else{ai.textAlign="center"}if(ah){ai.color=ah}if(this.paddingBottom){ai.paddingBottom=this.paddingBottom}if(this.fontFamily){ai.fontFamily=this.fontFamily}this._elem.css(ai);if(this.escapeHtml){this._elem.text(this.text)}else{this._elem.html(this.text)}}}aj=null;return this._elem};L.jqplot.DivTitleRenderer.prototype.pack=function(){};var r=0.1;L.jqplot.LinePattern=function(aw,aq){var ap={dotted:[r,L.jqplot.config.dotGapLength],dashed:[L.jqplot.config.dashLength,L.jqplot.config.gapLength],solid:null};if(typeof aq==="string"){if(aq[0]==="."||aq[0]==="-"){var ax=aq;aq=[];for(var ao=0,al=ax.length;ao0)&&(aC>0)){aA/=aB;az/=aB;while(true){var aD=aC*ar;if(aD=aq.length){ak=0}ar=aq[ak]}else{au=ay;at=aE;if((ak&1)==0){aw.lineTo(au,at)}else{aw.moveTo(au,at)}ar-=aB/aC;break}}}};var ai=function(){aw.beginPath()};var am=function(){aj(an,ah)};return{moveTo:av,lineTo:aj,beginPath:ai,closePath:am}};L.jqplot.LineRenderer=function(){this.shapeRenderer=new L.jqplot.ShapeRenderer();this.shadowRenderer=new L.jqplot.ShadowRenderer()};L.jqplot.LineRenderer.prototype.init=function(ai,an){ai=ai||{};this._type="line";this.renderer.animation={show:false,direction:"left",speed:2500,_supported:true};this.renderer.smooth=false;this.renderer.tension=null;this.renderer.constrainSmoothing=true;this.renderer._smoothedData=[];this.renderer._smoothedPlotData=[];this.renderer._hiBandGridData=[];this.renderer._lowBandGridData=[];this.renderer._hiBandSmoothedData=[];this.renderer._lowBandSmoothedData=[];this.renderer.bandData=[];this.renderer.bands={show:false,hiData:[],lowData:[],color:this.color,showLines:false,fill:true,fillColor:null,_min:null,_max:null,interval:"3%"};var al={highlightMouseOver:ai.highlightMouseOver,highlightMouseDown:ai.highlightMouseDown,highlightColor:ai.highlightColor};delete (ai.highlightMouseOver);delete (ai.highlightMouseDown);delete (ai.highlightColor);L.extend(true,this.renderer,ai);this.renderer.options=ai;if(this.renderer.bandData.length>1&&(!ai.bands||ai.bands.show==null)){this.renderer.bands.show=true}else{if(ai.bands&&ai.bands.show==null&&ai.bands.interval!=null){this.renderer.bands.show=true}}if(this.fill){this.renderer.bands.show=false}if(this.renderer.bands.show){this.renderer.initBands.call(this,this.renderer.options,an)}if(this._stack){this.renderer.smooth=false}var am={lineJoin:this.lineJoin,lineCap:this.lineCap,fill:this.fill,isarc:false,strokeStyle:this.color,fillStyle:this.fillColor,lineWidth:this.lineWidth,linePattern:this.linePattern,closePath:this.fill};this.renderer.shapeRenderer.init(am);var aj=ai.shadowOffset;if(aj==null){if(this.lineWidth>2.5){aj=1.25*(1+(Math.atan((this.lineWidth/2.5))/0.785398163-1)*0.6)}else{aj=1.25*Math.atan((this.lineWidth/2.5))/0.785398163}}var ah={lineJoin:this.lineJoin,lineCap:this.lineCap,fill:this.fill,isarc:false,angle:this.shadowAngle,offset:aj,alpha:this.shadowAlpha,depth:this.shadowDepth,lineWidth:this.lineWidth,linePattern:this.linePattern,closePath:this.fill};this.renderer.shadowRenderer.init(ah);this._areaPoints=[];this._boundingBox=[[],[]];if(!this.isTrendline&&this.fill||this.renderer.bands.show){this.highlightMouseOver=true;this.highlightMouseDown=false;this.highlightColor=null;if(al.highlightMouseDown&&al.highlightMouseOver==null){al.highlightMouseOver=false}L.extend(true,this,{highlightMouseOver:al.highlightMouseOver,highlightMouseDown:al.highlightMouseDown,highlightColor:al.highlightColor});if(!this.highlightColor){var ak=(this.renderer.bands.show)?this.renderer.bands.fillColor:this.fillColor;this.highlightColor=L.jqplot.computeHighlightColors(ak)}if(this.highlighter){this.highlighter.show=false}}if(!this.isTrendline&&an){an.plugins.lineRenderer={};an.postInitHooks.addOnce(z);an.postDrawHooks.addOnce(af);an.eventListenerHooks.addOnce("jqplotMouseMove",h);an.eventListenerHooks.addOnce("jqplotMouseDown",e);an.eventListenerHooks.addOnce("jqplotMouseUp",ad);an.eventListenerHooks.addOnce("jqplotClick",g);an.eventListenerHooks.addOnce("jqplotRightClick",s)}};L.jqplot.LineRenderer.prototype.initBands=function(ak,av){var al=ak.bandData||[];var an=this.renderer.bands;an.hiData=[];an.lowData=[];var aB=this.data;an._max=null;an._min=null;if(al.length==2){if(L.isArray(al[0][0])){var ao;var ah=0,ar=0;for(var aw=0,at=al[0].length;awan._max)||an._max==null){an._max=ao[1]}if((ao[1]!=null&&ao[1]an._max)||an._max==null){an._max=ao[1];ar=1}if((ao[1]!=null&&ao[1]al[1][0])?0:1;var aC=(aj)?0:1;for(var aw=0,at=aB.length;aw2&&!L.isArray(al[0][0])){var aj=(al[0][0]>al[0][1])?0:1;var aC=(aj)?0:1;for(var aw=0,at=al.length;awan._max)||an._max==null){an._max=am[aw][1]}}for(var aw=0,at=ap.length;aw0){aR=Math.abs((ap[aQ][1]-ap[aQ-1][1])/(ap[aQ][0]-ap[aQ-1][0]))}am=aR/aG+aE;aM=aF*A(am)-aF*A(aE)+aS;aT=(aO+aM)/2}else{aT=aU}for(aK=0;aK2){var ao;if(this.renderer.constrainSmoothing){ao=J.call(this,this.gridData);this.renderer._smoothedData=ao[0];this.renderer._smoothedPlotData=ao[1];if(ak.show){ao=J.call(this,this.renderer._hiBandGridData);this.renderer._hiBandSmoothedData=ao[0];ao=J.call(this,this.renderer._lowBandGridData);this.renderer._lowBandSmoothedData=ao[0]}ao=null}else{ao=F.call(this,this.gridData);this.renderer._smoothedData=ao[0];this.renderer._smoothedPlotData=ao[1];if(ak.show){ao=F.call(this,this.renderer._hiBandGridData);this.renderer._hiBandSmoothedData=ao[0];ao=F.call(this,this.renderer._lowBandGridData);this.renderer._lowBandSmoothedData=ao[0]}ao=null}}};L.jqplot.LineRenderer.prototype.makeGridData=function(ao,aq){var am=this._xaxis.series_u2p;var ah=this._yaxis.series_u2p;var ar=[];var aj=[];this.renderer._smoothedData=[];this.renderer._smoothedPlotData=[];this.renderer._hiBandGridData=[];this.renderer._lowBandGridData=[];this.renderer._hiBandSmoothedData=[];this.renderer._lowBandSmoothedData=[];var al=this.renderer.bands;var ai=false;for(var an=0;an2){var ap;if(this.renderer.constrainSmoothing){ap=J.call(this,ar);this.renderer._smoothedData=ap[0];this.renderer._smoothedPlotData=ap[1];if(al.show){ap=J.call(this,this.renderer._hiBandGridData);this.renderer._hiBandSmoothedData=ap[0];ap=J.call(this,this.renderer._lowBandGridData);this.renderer._lowBandSmoothedData=ap[0]}ap=null}else{ap=F.call(this,ar);this.renderer._smoothedData=ap[0];this.renderer._smoothedPlotData=ap[1];if(al.show){ap=F.call(this,this.renderer._hiBandGridData);this.renderer._hiBandSmoothedData=ap[0];ap=F.call(this,this.renderer._lowBandGridData);this.renderer._lowBandSmoothedData=ap[0]}ap=null}}return ar};L.jqplot.LineRenderer.prototype.draw=function(ax,aI,ai,aB){var aC;var aq=L.extend(true,{},ai);var ak=(aq.shadow!=u)?aq.shadow:this.shadow;var aJ=(aq.showLine!=u)?aq.showLine:this.showLine;var aA=(aq.fill!=u)?aq.fill:this.fill;var ah=(aq.fillAndStroke!=u)?aq.fillAndStroke:this.fillAndStroke;var ar,ay,av,aE;ax.save();if(aI.length){if(aJ){if(aA){if(this.fillToZero){var aF=this.negativeColor;if(!this.useNegativeColors){aF=aq.fillStyle}var ao=false;var ap=aq.fillStyle;if(ah){var aH=aI.slice(0)}if(this.index==0||!this._stack){var aw=[];var aL=(this.renderer.smooth)?this.renderer._smoothedPlotData:this._plotData;this._areaPoints=[];var aG=this._yaxis.series_u2p(this.fillToValue);var aj=this._xaxis.series_u2p(this.fillToValue);aq.closePath=true;if(this.fillAxis=="y"){aw.push([aI[0][0],aG]);this._areaPoints.push([aI[0][0],aG]);for(var aC=0;aC0;aC--){aI.push(au[aC-1])}if(ak){this.renderer.shadowRenderer.draw(ax,aI,aq)}this._areaPoints=aI;this.renderer.shapeRenderer.draw(ax,aI,aq)}}else{if(ah){var aH=aI.slice(0)}if(this.index==0||!this._stack){var al=ax.canvas.height;aI.unshift([aI[0][0],al]);var aD=aI.length;aI.push([aI[aD-1][0],al])}else{var au=this._prevGridData;for(var aC=au.length;aC>0;aC--){aI.push(au[aC-1])}}this._areaPoints=aI;if(ak){this.renderer.shadowRenderer.draw(ax,aI,aq)}this.renderer.shapeRenderer.draw(ax,aI,aq)}if(ah){var az=L.extend(true,{},aq,{fill:false,closePath:false});this.renderer.shapeRenderer.draw(ax,aH,az);if(this.markerRenderer.show){if(this.renderer.smooth){aH=this.gridData}for(aC=0;aCat[0]||ar==null){ar=at[0]}if(aEat[1]||ay==null){ay=at[1]}}if(this.type==="line"&&this.renderer.bands.show){aE=this._yaxis.series_u2p(this.renderer.bands._min);ay=this._yaxis.series_u2p(this.renderer.bands._max)}this._boundingBox=[[ar,aE],[av,ay]];if(this.markerRenderer.show&&!aA){if(this.renderer.smooth){aI=this.gridData}for(aC=0;aCao){ao=aj}}}al=null;am=null;if(ah){ai=this._label._elem.outerWidth(true);an=this._label._elem.outerHeight(true)}if(this.name=="xaxis"){ao=ao+an;this._elem.css({height:ao+"px",left:"0px",bottom:"0px"})}else{if(this.name=="x2axis"){ao=ao+an;this._elem.css({height:ao+"px",left:"0px",top:"0px"})}else{if(this.name=="yaxis"){ao=ao+ai;this._elem.css({width:ao+"px",left:"0px",top:"0px"});if(ah&&this._label.constructor==L.jqplot.AxisLabelRenderer){this._label._elem.css("width",ai+"px")}}else{ao=ao+ai;this._elem.css({width:ao+"px",right:"0px",top:"0px"});if(ah&&this._label.constructor==L.jqplot.AxisLabelRenderer){this._label._elem.css("width",ai+"px")}}}}}};L.jqplot.LinearAxisRenderer.prototype.createTicks=function(aj){var aT=this._ticks;var aK=this.ticks;var az=this.name;var aB=this._dataBounds;var ah=(this.name.charAt(0)==="x")?this._plotDimensions.width:this._plotDimensions.height;var an;var a6,aI;var ap,ao;var a4,a0;var aH=this.min;var a5=this.max;var aW=this.numberTicks;var ba=this.tickInterval;var am=30;this._scalefact=(Math.max(ah,am+1)-am)/300;if(aK.length){for(a0=0;a0this.breakPoints[0]&&aO[0]<=this.breakPoints[1]){aU.show=false;aU.showGridline=false;aU.label=aO[1]}else{aU.label=aO[1]}}}else{aU.label=aO[1]}aU.setTick(aO[0],this.name);this._ticks.push(aU)}else{if(L.isPlainObject(aO)){L.extend(true,aU,aO);aU.axis=this.name;this._ticks.push(aU)}else{aU.value=aO;if(this.breakPoints){if(aO==this.breakPoints[0]){aU.label=this.breakTickLabel;aU._breakTick=true;aU.showGridline=false;aU.showMark=false}else{if(aO>this.breakPoints[0]&&aO<=this.breakPoints[1]){aU.show=false;aU.showGridline=false}}}aU.setTick(aO,this.name);this._ticks.push(aU)}}}this.numberTicks=aK.length;this.min=this._ticks[0].value;this.max=this._ticks[this.numberTicks-1].value;this.tickInterval=(this.max-this.min)/(this.numberTicks-1)}else{if(az=="xaxis"||az=="x2axis"){ah=this._plotDimensions.width}else{ah=this._plotDimensions.height}var ax=this.numberTicks;if(this.alignTicks){if(this.name==="x2axis"&&aj.axes.xaxis.show){ax=aj.axes.xaxis.numberTicks}else{if(this.name.charAt(0)==="y"&&this.name!=="yaxis"&&this.name!=="yMidAxis"&&aj.axes.yaxis.show){ax=aj.axes.yaxis.numberTicks}}}a6=((this.min!=null)?this.min:aB.min);aI=((this.max!=null)?this.max:aB.max);var av=aI-a6;var aS,ay;var at;if(this.tickOptions==null||!this.tickOptions.formatString){this._overrideFormatString=true}if(this.min==null||this.max==null&&this.tickInterval==null&&!this.autoscale){if(this.forceTickAt0){if(a6>0){a6=0}if(aI<0){aI=0}}if(this.forceTickAt100){if(a6>100){a6=100}if(aI<100){aI=100}}var aE=false,a1=false;if(this.min!=null){aE=true}else{if(this.max!=null){a1=true}}var aP=L.jqplot.LinearTickGenerator(a6,aI,this._scalefact,ax,aE,a1);var aw=(this.min!=null)?a6:a6+av*(this.padMin-1);var aQ=(this.max!=null)?aI:aI-av*(this.padMax-1);if(a6aQ){aw=(this.min!=null)?a6:a6-av*(this.padMin-1);aQ=(this.max!=null)?aI:aI+av*(this.padMax-1);aP=L.jqplot.LinearTickGenerator(aw,aQ,this._scalefact,ax,aE,a1)}this.min=aP[0];this.max=aP[1];this.numberTicks=aP[2];this._autoFormatString=aP[3];this.tickInterval=aP[4]}else{if(a6==aI){var ai=0.05;if(a6>0){ai=Math.max(Math.log(a6)/Math.LN10,0.05)}a6-=ai;aI+=ai}if(this.autoscale&&this.min==null&&this.max==null){var ak,al,ar;var aC=false;var aN=false;var aA={min:null,max:null,average:null,stddev:null};for(var a0=0;a0a2){a2=aR[aZ]}}}var au=(a2-aG)/a2;if(aV.renderer.constructor==L.jqplot.BarRenderer){if(aG>=0&&(aV.fillToZero||au>0.1)){aC=true}else{aC=false;if(aV.fill&&aV.fillToZero&&aG<0&&a2>0){aN=true}else{aN=false}}}else{if(aV.fill){if(aG>=0&&(aV.fillToZero||au>0.1)){aC=true}else{if(aG<0&&a2>0&&aV.fillToZero){aC=false;aN=true}else{aC=false;aN=false}}}else{if(aG<0){aC=false}}}}}if(aC){this.numberTicks=2+Math.ceil((ah-(this.tickSpacing-1))/this.tickSpacing);this.min=0;aH=0;al=aI/(this.numberTicks-1);at=Math.pow(10,Math.abs(Math.floor(Math.log(al)/Math.LN10)));if(al/at==parseInt(al/at,10)){al+=at}this.tickInterval=Math.ceil(al/at)*at;this.max=this.tickInterval*(this.numberTicks-1)}else{if(aN){this.numberTicks=2+Math.ceil((ah-(this.tickSpacing-1))/this.tickSpacing);var aJ=Math.ceil(Math.abs(a6)/av*(this.numberTicks-1));var a9=this.numberTicks-1-aJ;al=Math.max(Math.abs(a6/aJ),Math.abs(aI/a9));at=Math.pow(10,Math.abs(Math.floor(Math.log(al)/Math.LN10)));this.tickInterval=Math.ceil(al/at)*at;this.max=this.tickInterval*a9;this.min=-this.tickInterval*aJ}else{if(this.numberTicks==null){if(this.tickInterval){this.numberTicks=3+Math.ceil(av/this.tickInterval)}else{this.numberTicks=2+Math.ceil((ah-(this.tickSpacing-1))/this.tickSpacing)}}if(this.tickInterval==null){al=av/(this.numberTicks-1);if(al<1){at=Math.pow(10,Math.abs(Math.floor(Math.log(al)/Math.LN10)))}else{at=1}this.tickInterval=Math.ceil(al*at*this.pad)/at}else{at=1/this.tickInterval}ak=this.tickInterval*(this.numberTicks-1);ar=(ak-av)/2;if(this.min==null){this.min=Math.floor(at*(a6-ar))/at}if(this.max==null){this.max=this.min+ak}}}var aF=L.jqplot.getSignificantFigures(this.tickInterval);var aM;if(aF.digitsLeft>=aF.significantDigits){aM="%d"}else{var at=Math.max(0,5-aF.digitsLeft);at=Math.min(at,aF.digitsRight);aM="%."+at+"f"}this._autoFormatString=aM}else{aS=(this.min!=null)?this.min:a6-av*(this.padMin-1);ay=(this.max!=null)?this.max:aI+av*(this.padMax-1);av=ay-aS;if(this.numberTicks==null){if(this.tickInterval!=null){this.numberTicks=Math.ceil((ay-aS)/this.tickInterval)+1}else{if(ah>100){this.numberTicks=parseInt(3+(ah-100)/75,10)}else{this.numberTicks=2}}}if(this.tickInterval==null){this.tickInterval=av/(this.numberTicks-1)}if(this.max==null){ay=aS+this.tickInterval*(this.numberTicks-1)}if(this.min==null){aS=ay-this.tickInterval*(this.numberTicks-1)}var aF=L.jqplot.getSignificantFigures(this.tickInterval);var aM;if(aF.digitsLeft>=aF.significantDigits){aM="%d"}else{var at=Math.max(0,5-aF.digitsLeft);at=Math.min(at,aF.digitsRight);aM="%."+at+"f"}this._autoFormatString=aM;this.min=aS;this.max=ay}if(this.renderer.constructor==L.jqplot.LinearAxisRenderer&&this._autoFormatString==""){av=this.max-this.min;var a7=new this.tickRenderer(this.tickOptions);var aL=a7.formatString||L.jqplot.config.defaultTickFormatString;var aL=aL.match(L.jqplot.sprintf.regex)[0];var a3=0;if(aL){if(aL.search(/[fFeEgGpP]/)>-1){var aY=aL.match(/\%\.(\d{0,})?[eEfFgGpP]/);if(aY){a3=parseInt(aY[1],10)}else{a3=6}}else{if(aL.search(/[di]/)>-1){a3=0}}var aq=Math.pow(10,-a3);if(this.tickIntervalthis.breakPoints[0]&&aAthis.breakPoints[0]&&aAthis.breakPoints[0]&&aA=this.breakPoints[1]){return(aA-au)*ak/al}else{return(aA+this.breakPoints[1]-this.breakPoints[0]-au)*ak/al}};this.series_p2u=function(aA){return aA*al/ak+au}}}else{this.p2u=function(aA){return(aA-am)*al/ak+at};this.u2p=function(aA){return(aA-at)*ak/al+am};if(this.name=="xaxis"||this.name=="x2axis"){this.series_u2p=function(aA){return(aA-at)*ak/al};this.series_p2u=function(aA){return aA*al/ak+at}}else{this.series_u2p=function(aA){return(aA-au)*ak/al};this.series_p2u=function(aA){return aA*al/ak+au}}}if(this.show){if(this.name=="xaxis"||this.name=="x2axis"){for(var av=0;av0){ah=-ap._textRenderer.height*Math.cos(-ap._textRenderer.angle)/2}else{ah=-ap.getHeight()+ap._textRenderer.height*Math.cos(ap._textRenderer.angle)/2}break;case"middle":ah=-ap.getHeight()/2;break;default:ah=-ap.getHeight()/2;break}}else{ah=-ap.getHeight()/2}var az=this.u2p(ap.value)+ah+"px";ap._elem.css("top",az);ap.pack()}}if(aq){var aw=this._label._elem.outerHeight(true);this._label._elem.css("top",ao-ak/2-aw/2+"px");if(this.name=="yaxis"){this._label._elem.css("left","0px")}else{this._label._elem.css("right","0px")}this._label.pack()}}}ay=null};function i(ai){var ah;ai=Math.abs(ai);if(ai>=10){ah="%d"}else{if(ai>1){if(ai===parseInt(ai,10)){ah="%d"}else{ah="%.1f"}}else{var aj=-Math.floor(Math.log(ai)/Math.LN10);ah="%."+aj+"f"}}return ah}var b=[0.1,0.2,0.3,0.4,0.5,0.8,1,2,3,4,5];var c=function(ai){var ah=b.indexOf(ai);if(ah>0){return b[ah-1]}else{return b[b.length-1]/100}};var k=function(ai){var ah=b.indexOf(ai);if(ah5){ah=10*aj}else{if(am>2){ah=5*aj}else{if(am>1){ah=2*aj}else{ah=aj}}}}else{if(am>5){ah=10*aj}else{if(am>4){ah=5*aj}else{if(am>3){ah=4*aj}else{if(am>2){ah=3*aj}else{if(am>1){ah=2*aj}else{ah=aj}}}}}}return ah}function Q(ai,ah){ah=ah||1;var ak=Math.floor(Math.log(ai)/Math.LN10);var am=Math.pow(10,ak);var al=ai/am;var aj;al=al/ah;if(al<=0.38){aj=0.1}else{if(al<=1.6){aj=0.2}else{if(al<=4){aj=0.5}else{if(al<=8){aj=1}else{if(al<=16){aj=2}else{aj=5}}}}}return aj*am}function x(aj,ai){var al=Math.floor(Math.log(aj)/Math.LN10);var an=Math.pow(10,al);var am=aj/an;var ah;var ak;am=am/ai;if(am<=0.38){ak=0.1}else{if(am<=1.6){ak=0.2}else{if(am<=4){ak=0.5}else{if(am<=8){ak=1}else{if(am<=16){ak=2}else{ak=5}}}}}ah=ak*an;return[ah,ak,an]}L.jqplot.LinearTickGenerator=function(an,aq,aj,ak,ao,ar){ao=(ao===null)?false:ao;ar=(ar===null||ao)?false:ar;if(an===aq){aq=(aq)?0:1}aj=aj||1;if(aqat){at=aB}if(ai>aA){aA=ai}})}an.width=at+Number(av);an.height=aA+Number(ax);var ak=an.getContext("2d");ak.save();ak.fillStyle=al;ak.fillRect(0,0,an.width,an.height);ak.restore();ak.translate(au,ar);ak.textAlign="left";ak.textBaseline="top";function aC(aE){var aF=parseInt(L(aE).css("line-height"),10);if(isNaN(aF)){aF=parseInt(L(aE).css("font-size"),10)*1.2}return aF}function aD(aF,aE,aS,aG,aO,aH){var aQ=aC(aF);var aK=L(aF).innerWidth();var aL=L(aF).innerHeight();var aN=aS.split(/\s+/);var aR=aN.length;var aP="";var aM=[];var aU=aO;var aT=aG;for(var aJ=0;aJaK){aM.push(aJ);aP="";aJ--}}if(aM.length===0){if(L(aF).css("textAlign")==="center"){aT=aG+(aH-aE.measureText(aP).width)/2-au}aE.fillText(aS,aT,aO)}else{aP=aN.slice(0,aM[0]).join(" ");if(L(aF).css("textAlign")==="center"){aT=aG+(aH-aE.measureText(aP).width)/2-au}aE.fillText(aP,aT,aU);aU+=aQ;for(var aJ=1,aI=aM.length;aJ0){ak.strokeRect(aI,aL,L(aG).innerWidth(),L(aG).innerHeight())}L(aG).find("div.jqplot-table-legend-swatch-outline").each(function(){var aU=L(this);ak.strokeStyle=aU.css("border-top-color");var aQ=aI+aU.position().left;var aR=aL+aU.position().top;ak.strokeRect(aQ,aR,aU.innerWidth(),aU.innerHeight());aQ+=parseInt(aU.css("padding-left"),10);aR+=parseInt(aU.css("padding-top"),10);var aT=aU.innerHeight()-2*parseInt(aU.css("padding-top"),10);var aP=aU.innerWidth()-2*parseInt(aU.css("padding-left"),10);var aS=aU.children("div.jqplot-table-legend-swatch");ak.fillStyle=aS.css("background-color");ak.fillRect(aQ,aR,aP,aT)});L(aG).find("td.jqplot-table-legend-label").each(function(){var aR=L(this);var aP=aI+aR.position().left;var aQ=aL+aR.position().top+parseInt(aR.css("padding-top"),10);ak.font=aR.jqplotGetComputedFontStyle();ak.fillStyle=aR.css("color");aD(aR,ak,aR.text(),aP,aQ,aM)});var aH=null}else{if(aN=="canvas"){ak.drawImage(aG,aI,aL)}}}}L(this).children().each(function(){aw(this,av,ax)});return an};L.fn.jqplotToImageStr=function(ai){var ah=L(this).jqplotToImageCanvas(ai);if(ah){return ah.toDataURL("image/png")}else{return null}};L.fn.jqplotToImageElem=function(ah){var ai=document.createElement("img");var aj=L(this).jqplotToImageStr(ah);ai.src=aj;return ai};L.fn.jqplotToImageElemStr=function(ah){var ai="";return ai};L.fn.jqplotSaveImage=function(){var ah=L(this).jqplotToImageStr({});if(ah){window.location.href=ah.replace("image/png","image/octet-stream")}};L.fn.jqplotViewImage=function(){var ai=L(this).jqplotToImageElemStr({});var aj=L(this).jqplotToImageStr({});if(ai){var ah=window.open("");ah.document.open("image/png");ah.document.write(ai);ah.document.close();ah=null}};var ag=function(){this.syntax=ag.config.syntax;this._type="jsDate";this.proxy=new Date();this.options={};this.locale=ag.regional.getLocale();this.formatString="";this.defaultCentury=ag.config.defaultCentury;switch(arguments.length){case 0:break;case 1:if(l(arguments[0])=="[object Object]"&&arguments[0]._type!="jsDate"){var aj=this.options=arguments[0];this.syntax=aj.syntax||this.syntax;this.defaultCentury=aj.defaultCentury||this.defaultCentury;this.proxy=ag.createDate(aj.date)}else{this.proxy=ag.createDate(arguments[0])}break;default:var ah=[];for(var ai=0;ai0?"floor":"ceil"](ak))};ag.prototype.getAbbrDayName=function(){return ag.regional[this.locale]["dayNamesShort"][this.proxy.getDay()]};ag.prototype.getAbbrMonthName=function(){return ag.regional[this.locale]["monthNamesShort"][this.proxy.getMonth()]};ag.prototype.getAMPM=function(){return this.proxy.getHours()>=12?"PM":"AM"};ag.prototype.getAmPm=function(){return this.proxy.getHours()>=12?"pm":"am"};ag.prototype.getCentury=function(){return parseInt(this.proxy.getFullYear()/100,10)};ag.prototype.getDate=function(){return this.proxy.getDate()};ag.prototype.getDay=function(){return this.proxy.getDay()};ag.prototype.getDayOfWeek=function(){var ah=this.proxy.getDay();return ah===0?7:ah};ag.prototype.getDayOfYear=function(){var ai=this.proxy;var ah=ai-new Date(""+ai.getFullYear()+"/1/1 GMT");ah+=ai.getTimezoneOffset()*60000;ai=null;return parseInt(ah/60000/60/24,10)+1};ag.prototype.getDayName=function(){return ag.regional[this.locale]["dayNames"][this.proxy.getDay()]};ag.prototype.getFullWeekOfYear=function(){var ak=this.proxy;var ah=this.getDayOfYear();var aj=6-ak.getDay();var ai=parseInt((ah+aj)/7,10);return ai};ag.prototype.getFullYear=function(){return this.proxy.getFullYear()};ag.prototype.getGmtOffset=function(){var ah=this.proxy.getTimezoneOffset()/60;var ai=ah<0?"+":"-";ah=Math.abs(ah);return ai+N(Math.floor(ah),2)+":"+N((ah%1)*60,2)};ag.prototype.getHours=function(){return this.proxy.getHours()};ag.prototype.getHours12=function(){var ah=this.proxy.getHours();return ah>12?ah-12:(ah==0?12:ah)};ag.prototype.getIsoWeek=function(){var ak=this.proxy;var aj=this.getWeekOfYear();var ah=(new Date(""+ak.getFullYear()+"/1/1")).getDay();var ai=aj+(ah>4||ah<=1?0:1);if(ai==53&&(new Date(""+ak.getFullYear()+"/12/31")).getDay()<4){ai=1}else{if(ai===0){ak=new ag(new Date(""+(ak.getFullYear()-1)+"/12/31"));ai=ak.getIsoWeek()}}ak=null;return ai};ag.prototype.getMilliseconds=function(){return this.proxy.getMilliseconds()};ag.prototype.getMinutes=function(){return this.proxy.getMinutes()};ag.prototype.getMonth=function(){return this.proxy.getMonth()};ag.prototype.getMonthName=function(){return ag.regional[this.locale]["monthNames"][this.proxy.getMonth()]};ag.prototype.getMonthNumber=function(){return this.proxy.getMonth()+1};ag.prototype.getSeconds=function(){return this.proxy.getSeconds()};ag.prototype.getShortYear=function(){return this.proxy.getYear()%100};ag.prototype.getTime=function(){return this.proxy.getTime()};ag.prototype.getTimezoneAbbr=function(){return this.proxy.toString().replace(/^.*\(([^)]+)\)$/,"$1")};ag.prototype.getTimezoneName=function(){var ah=/(?:\((.+)\)$| ([A-Z]{3}) )/.exec(this.toString());return ah[1]||ah[2]||"GMT"+this.getGmtOffset()};ag.prototype.getTimezoneOffset=function(){return this.proxy.getTimezoneOffset()};ag.prototype.getWeekOfYear=function(){var ah=this.getDayOfYear();var aj=7-this.getDayOfWeek();var ai=parseInt((ah+aj)/7,10);return ai};ag.prototype.getUnix=function(){return Math.round(this.proxy.getTime()/1000,0)};ag.prototype.getYear=function(){return this.proxy.getYear()};ag.prototype.next=function(ah){ah=ah||"day";return this.clone().add(1,ah)};ag.prototype.set=function(){switch(arguments.length){case 0:this.proxy=new Date();break;case 1:if(l(arguments[0])=="[object Object]"&&arguments[0]._type!="jsDate"){var aj=this.options=arguments[0];this.syntax=aj.syntax||this.syntax;this.defaultCentury=aj.defaultCentury||this.defaultCentury;this.proxy=ag.createDate(aj.date)}else{this.proxy=ag.createDate(arguments[0])}break;default:var ah=[];for(var ai=0;ai0?"floor":"ceil"](ah/12));var ai=aj.getMonth()+(ah%12);if(ai==12){ai=0;aj.setYear(aj.getFullYear()+1)}else{if(ai==-1){ai=11;aj.setYear(aj.getFullYear()-1)}}aj.setMonth(ai)},diff:function(al,aj){var ah=al.getFullYear()-aj.getFullYear();var ai=al.getMonth()-aj.getMonth()+(ah*12);var ak=al.getDate()-aj.getDate();return ai+(ak/30)}},year:{add:function(ai,ah){ai.setYear(ai.getFullYear()+Math[ah>0?"floor":"ceil"](ah))},diff:function(ai,ah){return E.month.diff(ai,ah)/12}}};for(var Y in E){if(Y.substring(Y.length-1)!="s"){E[Y+"s"]=E[Y]}}var H=function(al,ak,ai){if(ag.formats[ai]["shortcuts"][ak]){return ag.strftime(al,ag.formats[ai]["shortcuts"][ak],ai)}else{var ah=(ag.formats[ai]["codes"][ak]||"").split(".");var aj=al["get"+ah[0]]?al["get"+ah[0]]():"";if(ah[1]){aj=N(aj,ah[1])}return aj}};ag.strftime=function(an,ak,aj,ao){var ai="perl";var am=ag.regional.getLocale();if(aj&&ag.formats.hasOwnProperty(aj)){ai=aj}else{if(aj&&ag.regional.hasOwnProperty(aj)){am=aj}}if(ao&&ag.formats.hasOwnProperty(ao)){ai=ao}else{if(ao&&ag.regional.hasOwnProperty(ao)){am=ao}}if(l(an)!="[object Object]"||an._type!="jsDate"){an=new ag(an);an.locale=am}if(!ak){ak=an.formatString||ag.regional[am]["formatString"]}var ah=ak||"%Y-%m-%d",ap="",al;while(ah.length>0){if(al=ah.match(ag.formats[ai].codes.matcher)){ap+=ah.slice(0,al.index);ap+=(al[1]||"")+H(an,al[2],ai);ah=ah.slice(al.index+al[0].length)}else{ap+=ah;ah=""}}return ap};ag.formats={ISO:"%Y-%m-%dT%H:%M:%S.%N%G",SQL:"%Y-%m-%d %H:%M:%S"};ag.formats.perl={codes:{matcher:/()%(#?(%|[a-z]))/i,Y:"FullYear",y:"ShortYear.2",m:"MonthNumber.2","#m":"MonthNumber",B:"MonthName",b:"AbbrMonthName",d:"Date.2","#d":"Date",e:"Date",A:"DayName",a:"AbbrDayName",w:"Day",H:"Hours.2","#H":"Hours",I:"Hours12.2","#I":"Hours12",p:"AMPM",M:"Minutes.2","#M":"Minutes",S:"Seconds.2","#S":"Seconds",s:"Unix",N:"Milliseconds.3","#N":"Milliseconds",O:"TimezoneOffset",Z:"TimezoneName",G:"GmtOffset"},shortcuts:{F:"%Y-%m-%d",T:"%H:%M:%S",X:"%H:%M:%S",x:"%m/%d/%y",D:"%m/%d/%y","#c":"%a %b %e %H:%M:%S %Y",v:"%e-%b-%Y",R:"%H:%M",r:"%I:%M:%S %p",t:"\t",n:"\n","%":"%"}};ag.formats.php={codes:{matcher:/()%((%|[a-z]))/i,a:"AbbrDayName",A:"DayName",d:"Date.2",e:"Date",j:"DayOfYear.3",u:"DayOfWeek",w:"Day",U:"FullWeekOfYear.2",V:"IsoWeek.2",W:"WeekOfYear.2",b:"AbbrMonthName",B:"MonthName",m:"MonthNumber.2",h:"AbbrMonthName",C:"Century.2",y:"ShortYear.2",Y:"FullYear",H:"Hours.2",I:"Hours12.2",l:"Hours12",p:"AMPM",P:"AmPm",M:"Minutes.2",S:"Seconds.2",s:"Unix",O:"TimezoneOffset",z:"GmtOffset",Z:"TimezoneAbbr"},shortcuts:{D:"%m/%d/%y",F:"%Y-%m-%d",T:"%H:%M:%S",X:"%H:%M:%S",x:"%m/%d/%y",R:"%H:%M",r:"%I:%M:%S %p",t:"\t",n:"\n","%":"%"}};ag.createDate=function(aj){if(aj==null){return new Date()}if(aj instanceof Date){return aj}if(typeof aj=="number"){return new Date(aj)}var ao=String(aj).replace(/^\s*(.+)\s*$/g,"$1");ao=ao.replace(/^([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,4})/,"$1/$2/$3");ao=ao.replace(/^(3[01]|[0-2]?\d)[-\/]([a-z]{3,})[-\/](\d{4})/i,"$1 $2 $3");var an=ao.match(/^(3[01]|[0-2]?\d)[-\/]([a-z]{3,})[-\/](\d{2})\D*/i);if(an&&an.length>3){var at=parseFloat(an[3]);var am=ag.config.defaultCentury+at;am=String(am);ao=ao.replace(/^(3[01]|[0-2]?\d)[-\/]([a-z]{3,})[-\/](\d{2})\D*/i,an[1]+" "+an[2]+" "+am)}an=ao.match(/^([0-9]{1,2})[-\/]([0-9]{1,2})[-\/]([0-9]{1,2})[^0-9]/);function ar(ax,aw){var aC=parseFloat(aw[1]);var aB=parseFloat(aw[2]);var aA=parseFloat(aw[3]);var az=ag.config.defaultCentury;var av,au,aD,ay;if(aC>31){au=aA;aD=aB;av=az+aC}else{au=aB;aD=aC;av=az+aA}ay=aD+"/"+au+"/"+av;return ax.replace(/^([0-9]{1,2})[-\/]([0-9]{1,2})[-\/]([0-9]{1,2})/,ay)}if(an&&an.length>3){ao=ar(ao,an)}var an=ao.match(/^([0-9]{1,2})[-\/]([0-9]{1,2})[-\/]([0-9]{1,2})$/);if(an&&an.length>3){ao=ar(ao,an)}var al=0;var ai=ag.matchers.length;var aq,ah,ap=ao,ak;while(al31){ah=an;ai=am+ao}else{ah=ao;ai=am+an}var ap=ab(aj[2],ag.regional[ag.regional.getLocale()]["monthNamesShort"]);if(ap==-1){ap=ab(aj[2],ag.regional[ag.regional.getLocale()]["monthNames"])}ak.setFullYear(ai,ap,ah);ak.setHours(0,0,0,0);return ak}else{return al}}];function ab(aj,ak){if(ak.indexOf){return ak.indexOf(aj)}for(var ah=0,ai=ak.length;ah=ap)?"":Array(1+ap-au.length>>>0).join(aq);return at?au+ar:ar+au}function ak(ar){var aq=new String(ar);for(var ap=10;ap>0;ap--){if(aq==(aq=aq.replace(/^(\d+)(\d{3})/,"$1"+L.jqplot.sprintf.thousandsSeparator+"$2"))){break}}return aq}function aj(av,au,ax,ar,at,aq){var aw=ar-av.length;if(aw>0){var ap=" ";if(aq){ap=" "}if(ax||!at){av=an(av,ar,ap,ax)}else{av=av.slice(0,au.length)+an("",aw,"0",true)+av.slice(au.length)}}return av}function ao(ay,aq,aw,ar,ap,av,ax,au){var at=ay>>>0;aw=aw&&at&&{"2":"0b","8":"0","16":"0x"}[aq]||"";ay=aw+an(at.toString(aq),av||0,"0",false);return aj(ay,aw,ar,ap,ax,au)}function ah(au,av,ar,ap,at,aq){if(ap!=null){au=au.slice(0,ap)}return aj(au,"",av,ar,at,aq)}var ai=arguments,al=0,am=ai[al++];return am.replace(L.jqplot.sprintf.regex,function(aM,ax,ay,aB,aO,aJ,av){if(aM=="%%"){return"%"}var aD=false,az="",aA=false,aL=false,aw=false,au=false;for(var aI=0;ay&&aI-1?6:(av=="d")?0:void (0)}else{if(aJ=="*"){aJ=+ai[al++]}else{if(aJ.charAt(0)=="*"){aJ=+ai[aJ.slice(1,-1)]}else{aJ=+aJ}}}var aF=ax?ai[ax.slice(0,-1)]:ai[al++];switch(av){case"s":if(aF==null){return""}return ah(String(aF),aD,aB,aJ,aA,aw);case"c":return ah(String.fromCharCode(+aF),aD,aB,aJ,aA,aw);case"b":return ao(aF,2,aL,aD,aB,aJ,aA,aw);case"o":return ao(aF,8,aL,aD,aB,aJ,aA,aw);case"x":return ao(aF,16,aL,aD,aB,aJ,aA,aw);case"X":return ao(aF,16,aL,aD,aB,aJ,aA,aw).toUpperCase();case"u":return ao(aF,10,aL,aD,aB,aJ,aA,aw);case"i":var ar=parseInt(+aF,10);if(isNaN(ar)){return""}var aH=ar<0?"-":az;var aK=au?ak(String(Math.abs(ar))):String(Math.abs(ar));aF=aH+an(aK,aJ,"0",false);return aj(aF,aH,aD,aB,aA,aw);case"d":var ar=Math.round(+aF);if(isNaN(ar)){return""}var aH=ar<0?"-":az;var aK=au?ak(String(Math.abs(ar))):String(Math.abs(ar));aF=aH+an(aK,aJ,"0",false);return aj(aF,aH,aD,aB,aA,aw);case"e":case"E":case"f":case"F":case"g":case"G":var ar=+aF;if(isNaN(ar)){return""}var aH=ar<0?"-":az;var at=["toExponential","toFixed","toPrecision"]["efg".indexOf(av.toLowerCase())];var aN=["toString","toUpperCase"]["eEfFgG".indexOf(av)%2];var aK=Math.abs(ar)[at](aJ);var aE=aK.toString().split(".");aE[0]=au?ak(aE[0]):aE[0];aK=aE.join(L.jqplot.sprintf.decimalMark);aF=aH+aK;var aC=aj(aF,aH,aD,aB,aA,aw)[aN]();return aC;case"p":case"P":var ar=+aF;if(isNaN(ar)){return""}var aH=ar<0?"-":az;var aE=String(Number(Math.abs(ar)).toExponential()).split(/e|E/);var aq=(aE[0].indexOf(".")!=-1)?aE[0].length-1:String(ar).length;var aG=(aE[1]<0)?-aE[1]-1:0;if(Math.abs(ar)<1){if(aq+aG<=aJ){aF=aH+Math.abs(ar).toPrecision(aq)}else{if(aq<=aJ-1){aF=aH+Math.abs(ar).toExponential(aq-1)}else{aF=aH+Math.abs(ar).toExponential(aJ-1)}}}else{var ap=(aq<=aJ)?aq:aJ;aF=aH+Math.abs(ar).toPrecision(ap)}var aN=["toString","toUpperCase"]["pP".indexOf(av)%2];return aj(aF,aH,aD,aB,aA,aw)[aN]();case"n":return"";default:return aM}})};L.jqplot.sprintf.thousandsSeparator=",";L.jqplot.sprintf.decimalMark=".";L.jqplot.sprintf.regex=/%%|%(\d+\$)?([-+#0&\' ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([nAscboxXuidfegpEGP])/g;L.jqplot.getSignificantFigures=function(al){var an=String(Number(Math.abs(al)).toExponential()).split(/e|E/);var am=(an[0].indexOf(".")!=-1)?an[0].length-1:an[0].length;var ai=(an[1]<0)?-an[1]-1:0;var ah=parseInt(an[1],10);var aj=(ah+1>0)?ah+1:0;var ak=(am<=aj)?0:am-ah-1;return{significantDigits:am,digitsLeft:aj,digitsRight:ak,zeros:ai,exponent:ah}};L.jqplot.getPrecision=function(ah){return L.jqplot.getSignificantFigures(ah).digitsRight};var X=L.uiBackCompat!==false;L.jqplot.effects={effect:{}};var m="jqplot.storage.";L.extend(L.jqplot.effects,{version:"1.9pre",save:function(ai,aj){for(var ah=0;ah").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),ah={width:ai.width(),height:ai.height()},ak=document.activeElement;ai.wrap(al);if(ai[0]===ak||L.contains(ai[0],ak)){L(ak).focus()}al=ai.parent();if(ai.css("position")==="static"){al.css({position:"relative"});ai.css({position:"relative"})}else{L.extend(aj,{position:ai.css("position"),zIndex:ai.css("z-index")});L.each(["top","left","bottom","right"],function(am,an){aj[an]=ai.css(an);if(isNaN(parseInt(aj[an],10))){aj[an]="auto"}});ai.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}ai.css(ah);return al.css(aj).show()},removeWrapper:function(ah){var ai=document.activeElement;if(ah.parent().is(".ui-effects-wrapper")){ah.parent().replaceWith(ah);if(ah[0]===ai||L.contains(ah[0],ai)){L(ai).focus()}}return ah}});function j(ai,ah,aj,ak){if(L.isPlainObject(ai)){return ai}ai={effect:ai};if(ah===u){ah={}}if(L.isFunction(ah)){ak=ah;aj=null;ah={}}if(L.type(ah)==="number"||L.fx.speeds[ah]){ak=aj;aj=ah;ah={}}if(L.isFunction(aj)){ak=aj;aj=null}if(ah){L.extend(ai,ah)}aj=aj||ah.duration;ai.duration=L.fx.off?0:typeof aj==="number"?aj:aj in L.fx.speeds?L.fx.speeds[aj]:L.fx.speeds._default;ai.complete=ak||ah.complete;return ai}function ae(ah){if(!ah||typeof ah==="number"||L.fx.speeds[ah]){return true}if(typeof ah==="string"&&!L.jqplot.effects.effect[ah]){if(X&&L.jqplot.effects[ah]){return false}return true}return false}L.fn.extend({jqplotEffect:function(ap,aq,ai,ao){var an=j.apply(this,arguments),ak=an.mode,al=an.queue,am=L.jqplot.effects.effect[an.effect],ah=!am&&X&&L.jqplot.effects[an.effect];if(L.fx.off||!(am||ah)){if(ak){return this[ak](an.duration,an.complete)}else{return this.each(function(){if(an.complete){an.complete.call(this)}})}}function aj(au){var av=L(this),at=an.complete,aw=an.mode;function ar(){if(L.isFunction(at)){at.call(av[0])}if(L.isFunction(au)){au()}}if(av.is(":hidden")?aw==="hide":aw==="show"){ar()}else{am.call(av[0],an,ar)}}if(am){return al===false?this.each(aj):this.queue(al||"fx",aj)}else{return ah.call(this,{options:an,duration:an.duration,callback:an.complete,mode:an.mode})}}});var a=/up|down|vertical/,v=/up|left|vertical|horizontal/;L.jqplot.effects.effect.blind=function(aj,ao){var ak=L(this),ar=["position","top","bottom","left","right","height","width"],ap=L.jqplot.effects.setMode(ak,aj.mode||"hide"),au=aj.direction||"up",am=a.test(au),al=am?"height":"width",aq=am?"top":"left",aw=v.test(au),an={},av=ap==="show",ai,ah,at;if(ak.parent().is(".ui-effects-wrapper")){L.jqplot.effects.save(ak.parent(),ar)}else{L.jqplot.effects.save(ak,ar)}ak.show();at=parseInt(ak.css("top"),10);ai=L.jqplot.effects.createWrapper(ak).css({overflow:"hidden"});ah=am?ai[al]()+at:ai[al]();an[al]=av?String(ah):"0";if(!aw){ak.css(am?"bottom":"right",0).css(am?"top":"left","").css({position:"absolute"});an[aq]=av?"0":String(ah)}if(av){ai.css(al,0);if(!aw){ai.css(aq,ah)}}ai.animate(an,{duration:aj.duration,easing:aj.easing,queue:false,complete:function(){if(ap==="hide"){ak.hide()}L.jqplot.effects.restore(ak,ar);L.jqplot.effects.removeWrapper(ak);ao()}})}})(jQuery); \ No newline at end of file diff --git a/build/documentation/api/js/jqplot/plugins/jqplot.BezierCurveRenderer.min.js b/build/documentation/api/js/jqplot/plugins/jqplot.BezierCurveRenderer.min.js new file mode 100644 index 00000000..fb360573 --- /dev/null +++ b/build/documentation/api/js/jqplot/plugins/jqplot.BezierCurveRenderer.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(b){b.jqplot.BezierCurveRenderer=function(){b.jqplot.LineRenderer.call(this)};b.jqplot.BezierCurveRenderer.prototype=new b.jqplot.LineRenderer();b.jqplot.BezierCurveRenderer.prototype.constructor=b.jqplot.BezierCurveRenderer;b.jqplot.BezierCurveRenderer.prototype.setGridData=function(h){var e=this._xaxis.series_u2p;var g=this._yaxis.series_u2p;var f=this.data;this.gridData=[];this._prevGridData=[];var d=this.index;if(f.length==2){if(d==0){this.gridData=[[e.call(this._xaxis,f[0][0]),g.call(this._yaxis,f[0][1])],[e.call(this._xaxis,f[1][0]),g.call(this._yaxis,f[1][1]),e.call(this._xaxis,f[1][2]),g.call(this._yaxis,f[1][3]),e.call(this._xaxis,f[1][4]),g.call(this._yaxis,f[1][5])],[e.call(this._xaxis,f[1][4]),g.call(this._yaxis,this._yaxis.min)],[e.call(this._xaxis,f[0][0]),g.call(this._yaxis,this._yaxis.min)]]}else{var c=h.series[d-1].data;this.gridData=[[e.call(this._xaxis,f[0][0]),g.call(this._yaxis,f[0][1])],[e.call(this._xaxis,f[1][0]),g.call(this._yaxis,f[1][1]),e.call(this._xaxis,f[1][2]),g.call(this._yaxis,f[1][3]),e.call(this._xaxis,f[1][4]),g.call(this._yaxis,f[1][5])],[e.call(this._xaxis,c[1][4]),g.call(this._yaxis,c[1][5])],[e.call(this._xaxis,c[1][2]),g.call(this._yaxis,c[1][3]),e.call(this._xaxis,c[1][0]),g.call(this._yaxis,c[1][1]),e.call(this._xaxis,c[0][0]),g.call(this._yaxis,c[0][1])]]}}else{if(d==0){this.gridData=[[e.call(this._xaxis,f[0][0]),g.call(this._yaxis,f[0][1])],[e.call(this._xaxis,f[1][0]),g.call(this._yaxis,f[1][1]),e.call(this._xaxis,f[2][0]),g.call(this._yaxis,f[2][1]),e.call(this._xaxis,f[3][0]),g.call(this._yaxis,f[3][1])],[e.call(this._xaxis,f[3][1]),g.call(this._yaxis,this._yaxis.min)],[e.call(this._xaxis,f[0][0]),g.call(this._yaxis,this._yaxis.min)]]}else{var c=h.series[d-1].data;this.gridData=[[e.call(this._xaxis,f[0][0]),g.call(this._yaxis,f[0][1])],[e.call(this._xaxis,f[1][0]),g.call(this._yaxis,f[1][1]),e.call(this._xaxis,f[2][0]),g.call(this._yaxis,f[2][1]),e.call(this._xaxis,f[3][0]),g.call(this._yaxis,f[3][1])],[e.call(this._xaxis,c[3][0]),g.call(this._yaxis,c[3][1])],[e.call(this._xaxis,c[2][0]),g.call(this._yaxis,c[2][1]),e.call(this._xaxis,c[1][0]),g.call(this._yaxis,c[1][1]),e.call(this._xaxis,c[0][0]),g.call(this._yaxis,c[0][1])]]}}};b.jqplot.BezierCurveRenderer.prototype.makeGridData=function(g,i){var f=this._xaxis.series_u2p;var h=this._yaxis.series_u2p;var e=[];var j=[];var d=this.index;if(g.length==2){if(d==0){e=[[f.call(this._xaxis,g[0][0]),h.call(this._yaxis,g[0][1])],[f.call(this._xaxis,g[1][0]),h.call(this._yaxis,g[1][1]),f.call(this._xaxis,g[1][2]),h.call(this._yaxis,g[1][3]),f.call(this._xaxis,g[1][4]),h.call(this._yaxis,g[1][5])],[f.call(this._xaxis,g[1][4]),h.call(this._yaxis,this._yaxis.min)],[f.call(this._xaxis,g[0][0]),h.call(this._yaxis,this._yaxis.min)]]}else{var c=i.series[d-1].data;e=[[f.call(this._xaxis,g[0][0]),h.call(this._yaxis,g[0][1])],[f.call(this._xaxis,g[1][0]),h.call(this._yaxis,g[1][1]),f.call(this._xaxis,g[1][2]),h.call(this._yaxis,g[1][3]),f.call(this._xaxis,g[1][4]),h.call(this._yaxis,g[1][5])],[f.call(this._xaxis,c[1][4]),h.call(this._yaxis,c[1][5])],[f.call(this._xaxis,c[1][2]),h.call(this._yaxis,c[1][3]),f.call(this._xaxis,c[1][0]),h.call(this._yaxis,c[1][1]),f.call(this._xaxis,c[0][0]),h.call(this._yaxis,c[0][1])]]}}else{if(d==0){e=[[f.call(this._xaxis,g[0][0]),h.call(this._yaxis,g[0][1])],[f.call(this._xaxis,g[1][0]),h.call(this._yaxis,g[1][1]),f.call(this._xaxis,g[2][0]),h.call(this._yaxis,g[2][1]),f.call(this._xaxis,g[3][0]),h.call(this._yaxis,g[3][1])],[f.call(this._xaxis,g[3][1]),h.call(this._yaxis,this._yaxis.min)],[f.call(this._xaxis,g[0][0]),h.call(this._yaxis,this._yaxis.min)]]}else{var c=i.series[d-1].data;e=[[f.call(this._xaxis,g[0][0]),h.call(this._yaxis,g[0][1])],[f.call(this._xaxis,g[1][0]),h.call(this._yaxis,g[1][1]),f.call(this._xaxis,g[2][0]),h.call(this._yaxis,g[2][1]),f.call(this._xaxis,g[3][0]),h.call(this._yaxis,g[3][1])],[f.call(this._xaxis,c[3][0]),h.call(this._yaxis,c[3][1])],[f.call(this._xaxis,c[2][0]),h.call(this._yaxis,c[2][1]),f.call(this._xaxis,c[1][0]),h.call(this._yaxis,c[1][1]),f.call(this._xaxis,c[0][0]),h.call(this._yaxis,c[0][1])]]}}return e};b.jqplot.BezierCurveRenderer.prototype.draw=function(c,g,d){var e;c.save();if(g.length){if(this.showLine){c.save();var f=(d!=null)?d:{};c.fillStyle=f.fillStyle||this.color;c.beginPath();c.moveTo(g[0][0],g[0][1]);c.bezierCurveTo(g[1][0],g[1][1],g[1][2],g[1][3],g[1][4],g[1][5]);c.lineTo(g[2][0],g[2][1]);if(g[3].length==2){c.lineTo(g[3][0],g[3][1])}else{c.bezierCurveTo(g[3][0],g[3][1],g[3][2],g[3][3],g[3][4],g[3][5])}c.closePath();c.fill();c.restore()}}c.restore()};b.jqplot.BezierCurveRenderer.prototype.drawShadow=function(c,e,d){};b.jqplot.BezierAxisRenderer=function(){b.jqplot.LinearAxisRenderer.call(this)};b.jqplot.BezierAxisRenderer.prototype=new b.jqplot.LinearAxisRenderer();b.jqplot.BezierAxisRenderer.prototype.constructor=b.jqplot.BezierAxisRenderer;b.jqplot.BezierAxisRenderer.prototype.init=function(f){b.extend(true,this,f);var c=this._dataBounds;for(var g=0;gc.max||c.max==null){c.max=k[e][0]}}else{if(k[e][1]c.max||c.max==null){c.max=k[e][1]}}}}else{if(this.name=="xaxis"||this.name=="x2axis"){if(k[0][0]c.max||c.max==null){c.max=k[0][0]}for(var e=0;e<5;e+=2){if(k[1][e]c.max||c.max==null){c.max=k[1][e]}}}else{if(k[0][1]c.max||c.max==null){c.max=k[0][1]}for(var e=1;e<6;e+=2){if(k[1][e]c.max||c.max==null){c.max=k[1][e]}}}}}};function a(g,f,d){d=d||{};d.axesDefaults=b.extend(true,{pad:0},d.axesDefaults);d.seriesDefaults=d.seriesDefaults||{};d.legend=b.extend(true,{placement:"outside"},d.legend);var c=false;if(d.seriesDefaults.renderer==b.jqplot.BezierCurveRenderer){c=true}else{if(d.series){for(var e=0;e0){this.data[q][u]+=this.data[q-1][u]}}this.data[this.data.length]=(u==1)?[this.data.length+1,s]:[s,this.data.length+1];this._data[this._data.length]=(u==1)?[this._data.length+1,s]:[s,this._data.length+1]}if(this.rendererOptions.groups>1){this.breakOnNull=true;var n=this.data.length;var v=parseInt(n/this.rendererOptions.groups,10);var r=0;for(var q=v;q570)?n[p]*0.8:n[p]+0.3*(255-n[p]);n[p]=parseInt(n[p],10)}q.push("rgb("+n[0]+","+n[1]+","+n[2]+")")}return q}function i(v,u,s,t,o){var q=v,w=v-1,n,p,r=(o==="x")?0:1;if(q>0){p=t.series[w]._plotData[u][r];if((s*p)<0){n=i(w,u,s,t,o)}else{n=t.series[w].gridData[u][r]}}else{n=(r===0)?t.series[q]._xaxis.series_u2p(0):t.series[q]._yaxis.series_u2p(0)}return n}d.jqplot.BarRenderer.prototype.draw=function(E,L,q,G){var I;var A=d.extend({},q);var w=(A.shadow!=undefined)?A.shadow:this.shadow;var O=(A.showLine!=undefined)?A.showLine:this.showLine;var F=(A.fill!=undefined)?A.fill:this.fill;var p=this.xaxis;var J=this.yaxis;var y=this._xaxis.series_u2p;var K=this._yaxis.series_u2p;var D,C;this._dataColors=[];this._barPoints=[];if(this.barWidth==null){this.renderer.setBarWidth.call(this)}var N=this._plotSeriesInfo=this.renderer.calcSeriesNumbers.call(this);var x=N[0];var v=N[1];var s=N[2];var H=[];if(this._stack){this._barNudge=0}else{this._barNudge=(-Math.abs(v/2-0.5)+s)*(this.barWidth+this.barPadding)}if(O){var u=new d.jqplot.ColorGenerator(this.negativeSeriesColors);var B=new d.jqplot.ColorGenerator(this.seriesColors);var M=u.get(this.index);if(!this.useNegativeColors){M=A.fillStyle}var t=A.fillStyle;var r;var P;var o;if(this.barDirection=="vertical"){for(var I=0;I0&&I=0){o=this._yaxis.series_u2p(0)}else{if(this._yaxis.min>0){o=E.canvas.height}else{o=0}}}else{if(this.waterfall&&I==this.gridData.length-1){if(this._yaxis.min<=0&&this._yaxis.max>=0){o=this._yaxis.series_u2p(0)}else{if(this._yaxis.min>0){o=E.canvas.height}else{o=0}}}else{o=E.canvas.height}}}}}if((this.fillToZero&&this._plotData[I][1]<0)||(this.waterfall&&this._data[I][1]<0)){if(this.varyBarColor&&!this._stack){if(this.useNegativeColors){A.fillStyle=u.next()}else{A.fillStyle=B.next()}}else{A.fillStyle=M}}else{if(this.varyBarColor&&!this._stack){A.fillStyle=B.next()}else{A.fillStyle=t}}if(!this.fillToZero||this._plotData[I][1]>=0){H.push([r-this.barWidth/2,o]);H.push([r-this.barWidth/2,L[I][1]]);H.push([r+this.barWidth/2,L[I][1]]);H.push([r+this.barWidth/2,o])}else{H.push([r-this.barWidth/2,L[I][1]]);H.push([r-this.barWidth/2,o]);H.push([r+this.barWidth/2,o]);H.push([r+this.barWidth/2,L[I][1]])}this._barPoints.push(H);if(w&&!this._stack){var z=d.extend(true,{},A);delete z.fillStyle;this.renderer.shadowRenderer.draw(E,H,z)}var n=A.fillStyle||this.color;this._dataColors.push(n);this.renderer.shapeRenderer.draw(E,H,A)}}else{if(this.barDirection=="horizontal"){for(var I=0;I0&&I=0){P=this._xaxis.series_u2p(0)}else{if(this._xaxis.min>0){P=0}else{P=0}}}else{if(this.waterfall&&I==this.gridData.length-1){if(this._xaxis.min<=0&&this._xaxis.max>=0){P=this._xaxis.series_u2p(0)}else{if(this._xaxis.min>0){P=0}else{P=E.canvas.width}}}else{P=0}}}}}if((this.fillToZero&&this._plotData[I][0]<0)||(this.waterfall&&this._data[I][0]<0)){if(this.varyBarColor&&!this._stack){if(this.useNegativeColors){A.fillStyle=u.next()}else{A.fillStyle=B.next()}}else{A.fillStyle=M}}else{if(this.varyBarColor&&!this._stack){A.fillStyle=B.next()}else{A.fillStyle=t}}if(!this.fillToZero||this._plotData[I][0]>=0){H.push([P,r+this.barWidth/2]);H.push([P,r-this.barWidth/2]);H.push([L[I][0],r-this.barWidth/2]);H.push([L[I][0],r+this.barWidth/2])}else{H.push([L[I][0],r+this.barWidth/2]);H.push([L[I][0],r-this.barWidth/2]);H.push([P,r-this.barWidth/2]);H.push([P,r+this.barWidth/2])}this._barPoints.push(H);if(w&&!this._stack){var z=d.extend(true,{},A);delete z.fillStyle;this.renderer.shadowRenderer.draw(E,H,z)}var n=A.fillStyle||this.color;this._dataColors.push(n);this.renderer.shapeRenderer.draw(E,H,A)}}}}if(this.highlightColors.length==0){this.highlightColors=d.jqplot.computeHighlightColors(this._dataColors)}else{if(typeof(this.highlightColors)=="string"){var N=this.highlightColors;this.highlightColors=[];for(var I=0;I")}k=a.extend(true,{},this.css,k);c=a('
');this.canvas._elem.append(c);this.escapeHtml?c.text(p):c.html(p);delete k.position;delete k.marginRight;delete k.marginLeft;if(!k.background&&!k.backgroundColor&&!k.backgroundImage){k.background=j.next()}c.css(k);n=c.outerWidth();g=c.outerHeight();e=o[0]-n/2+"px";m=o[1]-g/2+"px";c.css({left:e,top:m});c=null}};a.jqplot.BlockCanvas=function(){a.jqplot.ElemContainer.call(this);this._ctx};a.jqplot.BlockCanvas.prototype=new a.jqplot.ElemContainer();a.jqplot.BlockCanvas.prototype.constructor=a.jqplot.BlockCanvas;a.jqplot.BlockCanvas.prototype.createElement=function(i,e,c){this._offsets=i;var b="jqplot-blockCanvas";if(e!=undefined){b=e}var g;if(this._elem){g=this._elem.get(0)}else{g=document.createElement("div")}if(c!=undefined){this._plotDimensions=c}var d=this._plotDimensions.width-this._offsets.left-this._offsets.right+"px";var f=this._plotDimensions.height-this._offsets.top-this._offsets.bottom+"px";this._elem=a(g);this._elem.css({position:"absolute",width:d,height:f,left:this._offsets.left,top:this._offsets.top});this._elem.addClass(b);return this._elem};a.jqplot.BlockCanvas.prototype.setContext=function(){this._ctx={canvas:{width:0,height:0},clearRect:function(){return null}};return this._ctx}})(jQuery); \ No newline at end of file diff --git a/build/documentation/api/js/jqplot/plugins/jqplot.bubbleRenderer.min.js b/build/documentation/api/js/jqplot/plugins/jqplot.bubbleRenderer.min.js new file mode 100644 index 00000000..d44a7cde --- /dev/null +++ b/build/documentation/api/js/jqplot/plugins/jqplot.bubbleRenderer.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(f){var d=function(m){return Math.max.apply(Math,m)};var j=function(m){return Math.min.apply(Math,m)};f.jqplot.BubbleRenderer=function(){f.jqplot.LineRenderer.call(this)};f.jqplot.BubbleRenderer.prototype=new f.jqplot.LineRenderer();f.jqplot.BubbleRenderer.prototype.constructor=f.jqplot.BubbleRenderer;f.jqplot.BubbleRenderer.prototype.init=function(w,t){this.varyBubbleColors=true;this.autoscaleBubbles=true;this.autoscaleMultiplier=1;this.autoscalePointsFactor=-0.07;this.escapeHtml=true;this.highlightMouseOver=true;this.highlightMouseDown=false;this.highlightColors=[];this.bubbleAlpha=1;this.highlightAlpha=null;this.bubbleGradients=false;this.showLabels=true;this.radii=[];this.maxRadius=0;this._highlightedPoint=null;this.labels=[];this.bubbleCanvases=[];this._type="bubble";if(w.highlightMouseDown&&w.highlightMouseOver==null){w.highlightMouseOver=false}f.extend(true,this,w);if(this.highlightAlpha==null){this.highlightAlpha=this.bubbleAlpha;if(this.bubbleGradients){this.highlightAlpha=0.35}}this.autoscaleMultiplier=this.autoscaleMultiplier*Math.pow(this.data.length,this.autoscalePointsFactor);this._highlightedPoint=null;var n;for(var r=0;r570)?u[q]*0.8:u[q]+0.3*(255-u[q]);u[q]=parseInt(u[q],10)}this.highlightColors.push("rgba("+u[0]+","+u[1]+","+u[2]+", "+this.highlightAlpha+")")}}this.highlightColorGenerator=new f.jqplot.ColorGenerator(this.highlightColors);var m={fill:true,isarc:true,angle:this.shadowAngle,alpha:this.shadowAlpha,closePath:true};this.renderer.shadowRenderer.init(m);this.canvas=new f.jqplot.DivCanvas();this.canvas._plotDimensions=this._plotDimensions;t.eventListenerHooks.addOnce("jqplotMouseMove",a);t.eventListenerHooks.addOnce("jqplotMouseDown",b);t.eventListenerHooks.addOnce("jqplotMouseUp",k);t.eventListenerHooks.addOnce("jqplotClick",g);t.eventListenerHooks.addOnce("jqplotRightClick",l);t.postDrawHooks.addOnce(h)};f.jqplot.BubbleRenderer.prototype.setGridData=function(w){var q=this._xaxis.series_u2p;var m=this._yaxis.series_u2p;var t=this._plotData;this.gridData=[];var s=[];this.radii=[];var v=Math.min(w._height,w._width);for(var u=0;u');if(this.escapeHtml){p.text(z)}else{p.html(z)}this.canvas._elem.append(p);var H=f(p).outerHeight();var v=f(p).outerWidth();var B=J[1]-0.5*H;var o=J[0]-0.5*v;p.css({top:B,left:o});this.labels[C]=f(p)}}};f.jqplot.DivCanvas=function(){f.jqplot.ElemContainer.call(this);this._ctx};f.jqplot.DivCanvas.prototype=new f.jqplot.ElemContainer();f.jqplot.DivCanvas.prototype.constructor=f.jqplot.DivCanvas;f.jqplot.DivCanvas.prototype.createElement=function(s,p,n){this._offsets=s;var m="jqplot-DivCanvas";if(p!=undefined){m=p}var r;if(this._elem){r=this._elem.get(0)}else{r=document.createElement("div")}if(n!=undefined){this._plotDimensions=n}var o=this._plotDimensions.width-this._offsets.left-this._offsets.right+"px";var q=this._plotDimensions.height-this._offsets.top-this._offsets.bottom+"px";this._elem=f(r);this._elem.css({position:"absolute",width:o,height:q,left:this._offsets.left,top:this._offsets.top});this._elem.addClass(m);return this._elem};f.jqplot.DivCanvas.prototype.setContext=function(){this._ctx={canvas:{width:0,height:0},clearRect:function(){return null}};return this._ctx};f.jqplot.BubbleCanvas=function(){f.jqplot.ElemContainer.call(this);this._ctx};f.jqplot.BubbleCanvas.prototype=new f.jqplot.ElemContainer();f.jqplot.BubbleCanvas.prototype.constructor=f.jqplot.BubbleCanvas;f.jqplot.BubbleCanvas.prototype.createElement=function(n,u,s){var m="jqplot-bubble-point";var q;if(this._elem){q=this._elem.get(0)}else{q=document.createElement("canvas")}q.width=(s!=null)?2*s:q.width;q.height=(s!=null)?2*s:q.height;this._elem=f(q);var o=(n!=null&&s!=null)?n-s:this._elem.css("left");var p=(u!=null&&s!=null)?u-s:this._elem.css("top");this._elem.css({position:"absolute",left:o,top:p});this._elem.addClass(m);if(f.jqplot.use_excanvas){window.G_vmlCanvasManager.init_(document);q=window.G_vmlCanvasManager.initElement(q)}return this._elem};f.jqplot.BubbleCanvas.prototype.draw=function(m,s,v,p){var D=this._ctx;var B=D.canvas.width/2;var z=D.canvas.height/2;D.save();if(v&&!f.jqplot.use_excanvas){m=m*1.04;var o=f.jqplot.getColorComponents(s);var u="rgba("+Math.round(o[0]+0.8*(255-o[0]))+", "+Math.round(o[1]+0.8*(255-o[1]))+", "+Math.round(o[2]+0.8*(255-o[2]))+", "+o[3]+")";var t="rgba("+o[0]+", "+o[1]+", "+o[2]+", 0)";var C=0.35*m;var A=B-Math.cos(p)*0.33*m;var n=z-Math.sin(p)*0.33*m;var w=D.createRadialGradient(A,n,C,B,z,m);w.addColorStop(0,u);w.addColorStop(0.93,s);w.addColorStop(0.96,t);w.addColorStop(1,t);D.fillStyle=w;D.fillRect(0,0,D.canvas.width,D.canvas.height)}else{D.fillStyle=s;D.strokeStyle=s;D.lineWidth=1;D.beginPath();var q=2*Math.PI;D.arc(B,z,m,0,q,0);D.closePath();D.fill()}D.restore()};f.jqplot.BubbleCanvas.prototype.setContext=function(){this._ctx=this._elem.get(0).getContext("2d");return this._ctx};f.jqplot.BubbleAxisRenderer=function(){f.jqplot.LinearAxisRenderer.call(this)};f.jqplot.BubbleAxisRenderer.prototype=new f.jqplot.LinearAxisRenderer();f.jqplot.BubbleAxisRenderer.prototype.constructor=f.jqplot.BubbleAxisRenderer;f.jqplot.BubbleAxisRenderer.prototype.init=function(n){f.extend(true,this,n);var I=this._dataBounds;var H=0,v=0,m=0,y=0,q=0,r=0,D=0,t=0,F=0,z=0;for(var E=0;EI.max||I.max==null){I.max=G[B][0];m=E;y=B;q=G[B][2];t=x.maxRadius;F=x.autoscaleMultiplier}}else{if(G[B][1]I.max||I.max==null){I.max=G[B][1];m=E;y=B;q=G[B][2];t=x.maxRadius;F=x.autoscaleMultiplier}}}}var o=r/D;var w=q/t;var C=I.max-I.min;var A=Math.min(this._plotDimensions.width,this._plotDimensions.height);var p=o*z/3*C;var u=w*F/3*C;I.max+=u;I.min-=p};function e(p,v,q){p.plugins.bubbleRenderer.highlightLabelCanvas.empty();var z=p.series[v];var n=p.plugins.bubbleRenderer.highlightCanvas;var w=n._ctx;w.clearRect(0,0,w.canvas.width,w.canvas.height);z._highlightedPoint=q;p.plugins.bubbleRenderer.highlightedSeriesIndex=v;var o=z.highlightColorGenerator.get(q);var u=z.gridData[q][0],t=z.gridData[q][1],m=z.gridData[q][2];w.save();w.fillStyle=o;w.strokeStyle=o;w.lineWidth=1;w.beginPath();w.arc(u,t,m,0,2*Math.PI,0);w.closePath();w.fill();w.restore();if(z.labels[q]){p.plugins.bubbleRenderer.highlightLabel=z.labels[q].clone();p.plugins.bubbleRenderer.highlightLabel.appendTo(p.plugins.bubbleRenderer.highlightLabelCanvas);p.plugins.bubbleRenderer.highlightLabel.addClass("jqplot-bubble-label-highlight")}}function i(p){var m=p.plugins.bubbleRenderer.highlightCanvas;var o=p.plugins.bubbleRenderer.highlightedSeriesIndex;p.plugins.bubbleRenderer.highlightLabelCanvas.empty();m._ctx.clearRect(0,0,m._ctx.canvas.width,m._ctx.canvas.height);for(var n=0;n');var q=this._gridPadding.top;var p=this._gridPadding.left;var n=this._plotDimensions.width-this._gridPadding.left-this._gridPadding.right;var m=this._plotDimensions.height-this._gridPadding.top-this._gridPadding.bottom;this.plugins.bubbleRenderer.highlightLabelCanvas.css({top:q,left:p,width:n+"px",height:m+"px"});this.eventCanvas._elem.before(this.plugins.bubbleRenderer.highlightCanvas.createElement(this._gridPadding,"jqplot-bubbleRenderer-highlight-canvas",this._plotDimensions,this));this.eventCanvas._elem.before(this.plugins.bubbleRenderer.highlightLabelCanvas);var o=this.plugins.bubbleRenderer.highlightCanvas.setContext()}function c(q,p,n){n=n||{};n.axesDefaults=n.axesDefaults||{};n.seriesDefaults=n.seriesDefaults||{};var m=false;if(n.seriesDefaults.renderer==f.jqplot.BubbleRenderer){m=true}else{if(n.series){for(var o=0;ot){y=w;w=t;t=y}if(v>s){y=v;v=s;s=y}var u=(o>=w&&o<=t&&n>=v&&n<=s);return u}function a(z,w,r,A,x){var y=x.plugins.canvasOverlay;var v=y.objects;var s=v.length;var u,o=false;var q;for(var t=0;t-1){return c/this.pt2px}else{if(b.indexOf("pt")>-1){return c}else{if(b.indexOf("em")>-1){return c*12}else{if(b.indexOf("%")>-1){return c*12/100}else{return c/this.pt2px}}}}};a.jqplot.CanvasTextRenderer.prototype.fontWeight2Float=function(b){if(Number(b)){return b/400}else{switch(b){case"normal":return 1;break;case"bold":return 1.75;break;case"bolder":return 2.25;break;case"lighter":return 0.75;break;default:return 1;break}}};a.jqplot.CanvasTextRenderer.prototype.getText=function(){return this.text};a.jqplot.CanvasTextRenderer.prototype.setText=function(c,b){this.text=c;this.setWidth(b);return this};a.jqplot.CanvasTextRenderer.prototype.getWidth=function(b){return this.width};a.jqplot.CanvasTextRenderer.prototype.setWidth=function(c,b){if(!b){this.width=this.measure(c,this.text)}else{this.width=b}return this};a.jqplot.CanvasTextRenderer.prototype.getHeight=function(b){return this.height};a.jqplot.CanvasTextRenderer.prototype.setHeight=function(b){if(!b){this.height=this.normalizedFontSize*this.pt2px}else{this.height=b}return this};a.jqplot.CanvasTextRenderer.prototype.letter=function(b){return this.letters[b]};a.jqplot.CanvasTextRenderer.prototype.ascent=function(){return this.normalizedFontSize};a.jqplot.CanvasTextRenderer.prototype.descent=function(){return 7*this.normalizedFontSize/25};a.jqplot.CanvasTextRenderer.prototype.measure=function(d,g){var f=0;var b=g.length;for(var e=0;e30)?2:2+(30-this.normalizedFontSize)/20;s.lineWidth=t*k*this.fontWeight2Float(this.fontWeight);for(var g=0;g":{width:24,points:[[4,18],[20,9],[4,0]]},"?":{width:18,points:[[3,16],[3,17],[4,19],[5,20],[7,21],[11,21],[13,20],[14,19],[15,17],[15,15],[14,13],[13,12],[9,10],[9,7],[-1,-1],[9,2],[8,1],[9,0],[10,1],[9,2]]},"@":{width:27,points:[[18,13],[17,15],[15,16],[12,16],[10,15],[9,14],[8,11],[8,8],[9,6],[11,5],[14,5],[16,6],[17,8],[-1,-1],[12,16],[10,14],[9,11],[9,8],[10,6],[11,5],[-1,-1],[18,16],[17,8],[17,6],[19,5],[21,5],[23,7],[24,10],[24,12],[23,15],[22,17],[20,19],[18,20],[15,21],[12,21],[9,20],[7,19],[5,17],[4,15],[3,12],[3,9],[4,6],[5,4],[7,2],[9,1],[12,0],[15,0],[18,1],[20,2],[21,3],[-1,-1],[19,16],[18,8],[18,6],[19,5]]},A:{width:18,points:[[9,21],[1,0],[-1,-1],[9,21],[17,0],[-1,-1],[4,7],[14,7]]},B:{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,15],[17,13],[16,12],[13,11],[-1,-1],[4,11],[13,11],[16,10],[17,9],[18,7],[18,4],[17,2],[16,1],[13,0],[4,0]]},C:{width:21,points:[[18,16],[17,18],[15,20],[13,21],[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5]]},D:{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[11,21],[14,20],[16,18],[17,16],[18,13],[18,8],[17,5],[16,3],[14,1],[11,0],[4,0]]},E:{width:19,points:[[4,21],[4,0],[-1,-1],[4,21],[17,21],[-1,-1],[4,11],[12,11],[-1,-1],[4,0],[17,0]]},F:{width:18,points:[[4,21],[4,0],[-1,-1],[4,21],[17,21],[-1,-1],[4,11],[12,11]]},G:{width:21,points:[[18,16],[17,18],[15,20],[13,21],[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[18,8],[-1,-1],[13,8],[18,8]]},H:{width:22,points:[[4,21],[4,0],[-1,-1],[18,21],[18,0],[-1,-1],[4,11],[18,11]]},I:{width:8,points:[[4,21],[4,0]]},J:{width:16,points:[[12,21],[12,5],[11,2],[10,1],[8,0],[6,0],[4,1],[3,2],[2,5],[2,7]]},K:{width:21,points:[[4,21],[4,0],[-1,-1],[18,21],[4,7],[-1,-1],[9,12],[18,0]]},L:{width:17,points:[[4,21],[4,0],[-1,-1],[4,0],[16,0]]},M:{width:24,points:[[4,21],[4,0],[-1,-1],[4,21],[12,0],[-1,-1],[20,21],[12,0],[-1,-1],[20,21],[20,0]]},N:{width:22,points:[[4,21],[4,0],[-1,-1],[4,21],[18,0],[-1,-1],[18,21],[18,0]]},O:{width:22,points:[[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[19,8],[19,13],[18,16],[17,18],[15,20],[13,21],[9,21]]},P:{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,14],[17,12],[16,11],[13,10],[4,10]]},Q:{width:22,points:[[9,21],[7,20],[5,18],[4,16],[3,13],[3,8],[4,5],[5,3],[7,1],[9,0],[13,0],[15,1],[17,3],[18,5],[19,8],[19,13],[18,16],[17,18],[15,20],[13,21],[9,21],[-1,-1],[12,4],[18,-2]]},R:{width:21,points:[[4,21],[4,0],[-1,-1],[4,21],[13,21],[16,20],[17,19],[18,17],[18,15],[17,13],[16,12],[13,11],[4,11],[-1,-1],[11,11],[18,0]]},S:{width:20,points:[[17,18],[15,20],[12,21],[8,21],[5,20],[3,18],[3,16],[4,14],[5,13],[7,12],[13,10],[15,9],[16,8],[17,6],[17,3],[15,1],[12,0],[8,0],[5,1],[3,3]]},T:{width:16,points:[[8,21],[8,0],[-1,-1],[1,21],[15,21]]},U:{width:22,points:[[4,21],[4,6],[5,3],[7,1],[10,0],[12,0],[15,1],[17,3],[18,6],[18,21]]},V:{width:18,points:[[1,21],[9,0],[-1,-1],[17,21],[9,0]]},W:{width:24,points:[[2,21],[7,0],[-1,-1],[12,21],[7,0],[-1,-1],[12,21],[17,0],[-1,-1],[22,21],[17,0]]},X:{width:20,points:[[3,21],[17,0],[-1,-1],[17,21],[3,0]]},Y:{width:18,points:[[1,21],[9,11],[9,0],[-1,-1],[17,21],[9,11]]},Z:{width:20,points:[[17,21],[3,0],[-1,-1],[3,21],[17,21],[-1,-1],[3,0],[17,0]]},"[":{width:14,points:[[4,25],[4,-7],[-1,-1],[5,25],[5,-7],[-1,-1],[4,25],[11,25],[-1,-1],[4,-7],[11,-7]]},"\\":{width:14,points:[[0,21],[14,-3]]},"]":{width:14,points:[[9,25],[9,-7],[-1,-1],[10,25],[10,-7],[-1,-1],[3,25],[10,25],[-1,-1],[3,-7],[10,-7]]},"^":{width:16,points:[[6,15],[8,18],[10,15],[-1,-1],[3,12],[8,17],[13,12],[-1,-1],[8,17],[8,0]]},_:{width:16,points:[[0,-2],[16,-2]]},"`":{width:10,points:[[6,21],[5,20],[4,18],[4,16],[5,15],[6,16],[5,17]]},a:{width:19,points:[[15,14],[15,0],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},b:{width:19,points:[[4,21],[4,0],[-1,-1],[4,11],[6,13],[8,14],[11,14],[13,13],[15,11],[16,8],[16,6],[15,3],[13,1],[11,0],[8,0],[6,1],[4,3]]},c:{width:18,points:[[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},d:{width:19,points:[[15,21],[15,0],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},e:{width:18,points:[[3,8],[15,8],[15,10],[14,12],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},f:{width:12,points:[[10,21],[8,21],[6,20],[5,17],[5,0],[-1,-1],[2,14],[9,14]]},g:{width:19,points:[[15,14],[15,-2],[14,-5],[13,-6],[11,-7],[8,-7],[6,-6],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},h:{width:19,points:[[4,21],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0]]},i:{width:8,points:[[3,21],[4,20],[5,21],[4,22],[3,21],[-1,-1],[4,14],[4,0]]},j:{width:10,points:[[5,21],[6,20],[7,21],[6,22],[5,21],[-1,-1],[6,14],[6,-3],[5,-6],[3,-7],[1,-7]]},k:{width:17,points:[[4,21],[4,0],[-1,-1],[14,14],[4,4],[-1,-1],[8,8],[15,0]]},l:{width:8,points:[[4,21],[4,0]]},m:{width:30,points:[[4,14],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0],[-1,-1],[15,10],[18,13],[20,14],[23,14],[25,13],[26,10],[26,0]]},n:{width:19,points:[[4,14],[4,0],[-1,-1],[4,10],[7,13],[9,14],[12,14],[14,13],[15,10],[15,0]]},o:{width:19,points:[[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3],[16,6],[16,8],[15,11],[13,13],[11,14],[8,14]]},p:{width:19,points:[[4,14],[4,-7],[-1,-1],[4,11],[6,13],[8,14],[11,14],[13,13],[15,11],[16,8],[16,6],[15,3],[13,1],[11,0],[8,0],[6,1],[4,3]]},q:{width:19,points:[[15,14],[15,-7],[-1,-1],[15,11],[13,13],[11,14],[8,14],[6,13],[4,11],[3,8],[3,6],[4,3],[6,1],[8,0],[11,0],[13,1],[15,3]]},r:{width:13,points:[[4,14],[4,0],[-1,-1],[4,8],[5,11],[7,13],[9,14],[12,14]]},s:{width:17,points:[[14,11],[13,13],[10,14],[7,14],[4,13],[3,11],[4,9],[6,8],[11,7],[13,6],[14,4],[14,3],[13,1],[10,0],[7,0],[4,1],[3,3]]},t:{width:12,points:[[5,21],[5,4],[6,1],[8,0],[10,0],[-1,-1],[2,14],[9,14]]},u:{width:19,points:[[4,14],[4,4],[5,1],[7,0],[10,0],[12,1],[15,4],[-1,-1],[15,14],[15,0]]},v:{width:16,points:[[2,14],[8,0],[-1,-1],[14,14],[8,0]]},w:{width:22,points:[[3,14],[7,0],[-1,-1],[11,14],[7,0],[-1,-1],[11,14],[15,0],[-1,-1],[19,14],[15,0]]},x:{width:17,points:[[3,14],[14,0],[-1,-1],[14,14],[3,0]]},y:{width:16,points:[[2,14],[8,0],[-1,-1],[14,14],[8,0],[6,-4],[4,-6],[2,-7],[1,-7]]},z:{width:17,points:[[14,14],[3,0],[-1,-1],[3,14],[14,14],[-1,-1],[3,0],[14,0]]},"{":{width:14,points:[[9,25],[7,24],[6,23],[5,21],[5,19],[6,17],[7,16],[8,14],[8,12],[6,10],[-1,-1],[7,24],[6,22],[6,20],[7,18],[8,17],[9,15],[9,13],[8,11],[4,9],[8,7],[9,5],[9,3],[8,1],[7,0],[6,-2],[6,-4],[7,-6],[-1,-1],[6,8],[8,6],[8,4],[7,2],[6,1],[5,-1],[5,-3],[6,-5],[7,-6],[9,-7]]},"|":{width:8,points:[[4,25],[4,-7]]},"}":{width:14,points:[[5,25],[7,24],[8,23],[9,21],[9,19],[8,17],[7,16],[6,14],[6,12],[8,10],[-1,-1],[7,24],[8,22],[8,20],[7,18],[6,17],[5,15],[5,13],[6,11],[10,9],[6,7],[5,5],[5,3],[6,1],[7,0],[8,-2],[8,-4],[7,-6],[-1,-1],[8,8],[6,6],[6,4],[7,2],[8,1],[9,-1],[9,-3],[8,-5],[7,-6],[5,-7]]},"~":{width:24,points:[[3,6],[3,8],[4,11],[6,12],[8,12],[10,11],[14,8],[16,7],[18,7],[20,8],[21,10],[-1,-1],[3,8],[4,10],[6,11],[8,11],[10,10],[14,7],[16,6],[18,6],[20,7],[21,10],[21,12]]}};a.jqplot.CanvasFontRenderer=function(b){b=b||{};if(!b.pt2px){b.pt2px=1.5}a.jqplot.CanvasTextRenderer.call(this,b)};a.jqplot.CanvasFontRenderer.prototype=new a.jqplot.CanvasTextRenderer({});a.jqplot.CanvasFontRenderer.prototype.constructor=a.jqplot.CanvasFontRenderer;a.jqplot.CanvasFontRenderer.prototype.measure=function(c,e){var d=this.fontSize+" "+this.fontFamily;c.save();c.font=d;var b=c.measureText(e).width;c.restore();return b};a.jqplot.CanvasFontRenderer.prototype.draw=function(e,g){var c=0;var h=this.height*0.72;e.save();var d,b;if((-Math.PI/2<=this.angle&&this.angle<=0)||(Math.PI*3/2<=this.angle&&this.angle<=Math.PI*2)){d=0;b=-Math.sin(this.angle)*this.width}else{if((0b.max||b.max==null){b.max=h[c][0]}}else{if(h[c][1]b.max||b.max==null){b.max=h[c][1]}}}}if(this.groupLabels.length){this.groups=this.groupLabels.length}};a.jqplot.CategoryAxisRenderer.prototype.createTicks=function(){var D=this._ticks;var z=this.ticks;var F=this.name;var C=this._dataBounds;var v,A;var q,w;var d,c;var b,x;if(z.length){if(this.groups>1&&!this._grouped){var r=z.length;var p=parseInt(r/this.groups,10);var e=0;for(var x=p;x1&&!this._grouped){var r=y.length;var p=parseInt(r/this.groups,10);var e=0;for(var x=p;x0&&o');if(this.name=="xaxis"||this.name=="x2axis"){this._elem.width(this._plotDimensions.width)}else{this._elem.height(this._plotDimensions.height)}this.labelOptions.axis=this.name;this._label=new this.labelRenderer(this.labelOptions);if(this._label.show){var g=this._label.draw(b,j);g.appendTo(this._elem)}var f=this._ticks;for(var e=0;e');g.html(this.groupLabels[e]);this._groupLabels.push(g);g.appendTo(this._elem)}}return this._elem};a.jqplot.CategoryAxisRenderer.prototype.set=function(){var e=0;var m;var k=0;var f=0;var d=(this._label==null)?false:this._label.show;if(this.show){var n=this._ticks;for(var c=0;ce){e=m}}}var j=0;for(var c=0;cj){j=m}}if(d){k=this._label._elem.outerWidth(true);f=this._label._elem.outerHeight(true)}if(this.name=="xaxis"){e+=j+f;this._elem.css({height:e+"px",left:"0px",bottom:"0px"})}else{if(this.name=="x2axis"){e+=j+f;this._elem.css({height:e+"px",left:"0px",top:"0px"})}else{if(this.name=="yaxis"){e+=j+k;this._elem.css({width:e+"px",left:"0px",top:"0px"});if(d&&this._label.constructor==a.jqplot.AxisLabelRenderer){this._label._elem.css("width",k+"px")}}else{e+=j+k;this._elem.css({width:e+"px",right:"0px",top:"0px"});if(d&&this._label.constructor==a.jqplot.AxisLabelRenderer){this._label._elem.css("width",k+"px")}}}}}};a.jqplot.CategoryAxisRenderer.prototype.pack=function(e,c){var C=this._ticks;var v=this.max;var s=this.min;var n=c.max;var l=c.min;var q=(this._label==null)?false:this._label.show;var x;for(var r in e){this._elem.css(r,e[r])}this._offsets=c;var g=n-l;var k=v-s;if(!this.reverse){this.u2p=function(h){return(h-s)*g/k+l};this.p2u=function(h){return(h-l)*k/g+s};if(this.name=="xaxis"||this.name=="x2axis"){this.series_u2p=function(h){return(h-s)*g/k};this.series_p2u=function(h){return h*k/g+s}}else{this.series_u2p=function(h){return(h-v)*g/k};this.series_p2u=function(h){return h*k/g+v}}}else{this.u2p=function(h){return l+(v-h)*g/k};this.p2u=function(h){return s+(h-l)*k/g};if(this.name=="xaxis"||this.name=="x2axis"){this.series_u2p=function(h){return(v-h)*g/k};this.series_p2u=function(h){return h*k/g+v}}else{this.series_u2p=function(h){return(s-h)*g/k};this.series_p2u=function(h){return h*k/g+s}}}if(this.show){if(this.name=="xaxis"||this.name=="x2axis"){for(x=0;x=this._ticks.length-1){continue}if(this._ticks[u]._elem&&this._ticks[u].label!=" "){var o=this._ticks[u]._elem;var r=o.position();B+=r.left+o.outerWidth(true)/2;f++}}B=B/f;this._groupLabels[x].css({left:(B-this._groupLabels[x].outerWidth(true)/2)});this._groupLabels[x].css(z[0],z[1])}}else{for(x=0;x0){b=-o._textRenderer.height*Math.cos(-o._textRenderer.angle)/2}else{b=-o.getHeight()+o._textRenderer.height*Math.cos(o._textRenderer.angle)/2}break;case"middle":b=-o.getHeight()/2;break;default:b=-o.getHeight()/2;break}}else{b=-o.getHeight()/2}var D=this.u2p(o.value)+b+"px";o._elem.css("top",D);o.pack()}}var z=["left",0];if(q){var y=this._label._elem.outerHeight(true);this._label._elem.css("top",n-g/2-y/2+"px");if(this.name=="yaxis"){this._label._elem.css("left","0px");z=["left",this._label._elem.outerWidth(true)]}else{this._label._elem.css("right","0px");z=["right",this._label._elem.outerWidth(true)]}this._label.pack()}var d=parseInt(this._ticks.length/this.groups,10)+1;for(x=0;x=this._ticks.length-1){continue}if(this._ticks[u]._elem&&this._ticks[u].label!=" "){var o=this._ticks[u]._elem;var r=o.position();B+=r.top+o.outerHeight()/2;f++}}B=B/f;this._groupLabels[x].css({top:B-this._groupLabels[x].outerHeight()/2});this._groupLabels[x].css(z[0],z[1])}}}}})(jQuery); \ No newline at end of file diff --git a/build/documentation/api/js/jqplot/plugins/jqplot.ciParser.min.js b/build/documentation/api/js/jqplot/plugins/jqplot.ciParser.min.js new file mode 100644 index 00000000..e17e7921 --- /dev/null +++ b/build/documentation/api/js/jqplot/plugins/jqplot.ciParser.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(a){a.jqplot.ciParser=function(g,l){var m=[],o,n,h,f,e,c;if(typeof(g)=="string"){g=a.jqplot.JSON.parse(g,d)}else{if(typeof(g)=="object"){for(e in g){for(h=0;h=0){i=/^\/Date\((-?[0-9]+)\)\/$/.exec(k);if(i){return parseInt(i[1],10)}}return k}}for(var b in g){o=[];n=g[b];switch(b){case"PriceTicks":for(h=0;h6&&Math.abs(G.y-I._zoom.start[1])>6)||(I.constrainZoomTo=="x"&&Math.abs(G.x-I._zoom.start[0])>6)||(I.constrainZoomTo=="y"&&Math.abs(G.y-I._zoom.start[1])>6)){if(!C.plugins.cursor.zoomProxy){for(var y in t){if(I._zoom.axes[y]==undefined){I._zoom.axes[y]={};I._zoom.axes[y].numberTicks=F[y].numberTicks;I._zoom.axes[y].tickInterval=F[y].tickInterval;I._zoom.axes[y].daTickInterval=F[y].daTickInterval;I._zoom.axes[y].min=F[y].min;I._zoom.axes[y].max=F[y].max;I._zoom.axes[y].tickFormatString=(F[y].tickOptions!=null)?F[y].tickOptions.formatString:""}if((I.constrainZoomTo=="none")||(I.constrainZoomTo=="x"&&y.charAt(0)=="x")||(I.constrainZoomTo=="y"&&y.charAt(0)=="y")){z=t[y];if(z!=null){if(z>w[y]){v=w[y];x=z}else{D=w[y]-z;v=z;x=w[y]}q=F[y];H=null;if(q.alignTicks){if(q.name==="x2axis"&&C.axes.xaxis.show){H=C.axes.xaxis.numberTicks}else{if(q.name.charAt(0)==="y"&&q.name!=="yaxis"&&q.name!=="yMidAxis"&&C.axes.yaxis.show){H=C.axes.yaxis.numberTicks}}}if(this.looseZoom&&(F[y].renderer.constructor===j.jqplot.LinearAxisRenderer||F[y].renderer.constructor===j.jqplot.LogAxisRenderer)){J=j.jqplot.LinearTickGenerator(v,x,q._scalefact,H);if(F[y].tickInset&&J[0]F[y].max-F[y].tickInset*F[y].tickInterval){J[1]-=J[4];J[2]-=1}if(F[y].renderer.constructor===j.jqplot.LogAxisRenderer&&J[0]"}if(J.useAxesFormatters){for(var D=0;D"}w+=j.jqplot.sprintf(J.tooltipFormatString,t,z,x);N=true}}}}J._tooltipElem.html(w)}function g(C,A){var E=A.plugins.cursor;var z=E.cursorCanvas._ctx;z.clearRect(0,0,z.canvas.width,z.canvas.height);if(E.showVerticalLine){E.shapeRenderer.draw(z,[[C.x,0],[C.x,z.canvas.height]])}if(E.showHorizontalLine){E.shapeRenderer.draw(z,[[0,C.y],[z.canvas.width,C.y]])}var G=d(A,C.x,C.y);if(E.showCursorLegend){var r=j(A.targetId+" td.jqplot-cursor-legend-label");for(var B=0;B0;r--){s=v[r-1];if(q[s].show){u[s]=q[s].series_p2u(w[s.charAt(0)])}}return{offsets:t,gridPos:w,dataPos:u}}function h(z){var x=z.data.plot;var y=x.plugins.cursor;if(y.show&&y.zoom&&y._zoom.started&&!y.zoomTarget){z.preventDefault();var B=y.zoomCanvas._ctx;var v=o(z);var w=v.gridPos;var t=v.dataPos;y._zoom.gridpos=w;y._zoom.datapos=t;y._zoom.zooming=true;var u=w.x;var s=w.y;var A=B.canvas.height;var q=B.canvas.width;if(y.showTooltip&&!y.onGrid&&y.showTooltipOutsideZoom){e(w,t,x);if(y.followMouse){n(w,x)}}if(y.constrainZoomTo=="x"){y._zoom.end=[u,A]}else{if(y.constrainZoomTo=="y"){y._zoom.end=[q,s]}else{y._zoom.end=[u,s]}}var r=window.getSelection;if(document.selection&&document.selection.empty){document.selection.empty()}else{if(r&&!r().isCollapsed){r().collapse()}}l.call(y);B=null}}function a(w,s,r,x,t){var v=t.plugins.cursor;if(t.plugins.mobile){j(document).one("vmouseup.jqplot_cursor",{plot:t},p)}else{j(document).one("mouseup.jqplot_cursor",{plot:t},p)}var u=t.axes;if(document.onselectstart!=undefined){v._oldHandlers.onselectstart=document.onselectstart;document.onselectstart=function(){return false}}if(document.ondrag!=undefined){v._oldHandlers.ondrag=document.ondrag;document.ondrag=function(){return false}}if(document.onmousedown!=undefined){v._oldHandlers.onmousedown=document.onmousedown;document.onmousedown=function(){return false}}if(v.zoom){if(!v.zoomProxy){var y=v.zoomCanvas._ctx;y.clearRect(0,0,y.canvas.width,y.canvas.height);y=null}if(v.constrainZoomTo=="x"){v._zoom.start=[s.x,0]}else{if(v.constrainZoomTo=="y"){v._zoom.start=[0,s.y]}else{v._zoom.start=[s.x,s.y]}}v._zoom.started=true;for(var q in r){v._zoom.axes.start[q]=r[q]}if(t.plugins.mobile){j(document).bind("vmousemove.jqplotCursor",{plot:t},h)}else{j(document).bind("mousemove.jqplotCursor",{plot:t},h)}}}function p(y){var v=y.data.plot;var x=v.plugins.cursor;if(x.zoom&&x._zoom.zooming&&!x.zoomTarget){var u=x._zoom.gridpos.x;var r=x._zoom.gridpos.y;var t=x._zoom.datapos;var z=x.zoomCanvas._ctx.canvas.height;var q=x.zoomCanvas._ctx.canvas.width;var w=v.axes;if(x.constrainOutsideZoom&&!x.onGrid){if(u<0){u=0}else{if(u>q){u=q}}if(r<0){r=0}else{if(r>z){r=z}}for(var s in t){if(t[s]){if(s.charAt(0)=="x"){t[s]=w[s].series_p2u(u)}else{t[s]=w[s].series_p2u(r)}}}}if(x.constrainZoomTo=="x"){r=z}else{if(x.constrainZoomTo=="y"){u=q}}x._zoom.end=[u,r];x._zoom.gridpos={x:u,y:r};x.doZoom(x._zoom.gridpos,t,v,x)}x._zoom.started=false;x._zoom.zooming=false;j(document).unbind("mousemove.jqplotCursor",h);if(document.onselectstart!=undefined&&x._oldHandlers.onselectstart!=null){document.onselectstart=x._oldHandlers.onselectstart;x._oldHandlers.onselectstart=null}if(document.ondrag!=undefined&&x._oldHandlers.ondrag!=null){document.ondrag=x._oldHandlers.ondrag;x._oldHandlers.ondrag=null}if(document.onmousedown!=undefined&&x._oldHandlers.onmousedown!=null){document.onmousedown=x._oldHandlers.onmousedown;x._oldHandlers.onmousedown=null}}function l(){var y=this._zoom.start;var u=this._zoom.end;var s=this.zoomCanvas._ctx;var r,v,x,q;if(u[0]>y[0]){r=y[0];q=u[0]-y[0]}else{r=u[0];q=y[0]-u[0]}if(u[1]>y[1]){v=y[1];x=u[1]-y[1]}else{v=u[1];x=y[1]-u[1]}s.fillStyle="rgba(0,0,0,0.2)";s.strokeStyle="#999999";s.lineWidth=1;s.clearRect(0,0,s.canvas.width,s.canvas.height);s.fillRect(0,0,s.canvas.width,s.canvas.height);s.clearRect(r,v,q,x);s.strokeRect(r,v,q,x);s=null}j.jqplot.CursorLegendRenderer=function(q){j.jqplot.TableLegendRenderer.call(this,q);this.formatString="%s"};j.jqplot.CursorLegendRenderer.prototype=new j.jqplot.TableLegendRenderer();j.jqplot.CursorLegendRenderer.prototype.constructor=j.jqplot.CursorLegendRenderer;j.jqplot.CursorLegendRenderer.prototype.draw=function(){if(this._elem){this._elem.emptyForce();this._elem=null}if(this.show){var w=this._series,A;var r=document.createElement("table");this._elem=j(r);r=null;this._elem.addClass("jqplot-legend jqplot-cursor-legend");this._elem.css("position","absolute");var q=false;for(var x=0;x').appendTo(this._elem);E.data("seriesIndex",s);j('
').appendTo(E);var G=j('');G.appendTo(E);G.data("seriesIndex",s);if(this.escapeHtml){G.text(D)}else{G.html(D)}E=null;G=null}return this._elem}})(jQuery); \ No newline at end of file diff --git a/build/documentation/api/js/jqplot/plugins/jqplot.dateAxisRenderer.min.js b/build/documentation/api/js/jqplot/plugins/jqplot.dateAxisRenderer.min.js new file mode 100644 index 00000000..a295489b --- /dev/null +++ b/build/documentation/api/js/jqplot/plugins/jqplot.dateAxisRenderer.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(h){h.jqplot.DateAxisRenderer=function(){h.jqplot.LinearAxisRenderer.call(this);this.date=new h.jsDate()};var c=1000;var e=60*c;var f=60*e;var l=24*f;var b=7*l;var j=30.4368499*l;var k=365.242199*l;var g=[31,28,31,30,31,30,31,30,31,30,31,30];var i=["%M:%S.%#N","%M:%S.%#N","%M:%S.%#N","%M:%S","%M:%S","%M:%S","%M:%S","%H:%M:%S","%H:%M:%S","%H:%M","%H:%M","%H:%M","%H:%M","%H:%M","%H:%M","%a %H:%M","%a %H:%M","%b %e %H:%M","%b %e %H:%M","%b %e %H:%M","%b %e %H:%M","%v","%v","%v","%v","%v","%v","%v"];var m=[0.1*c,0.2*c,0.5*c,c,2*c,5*c,10*c,15*c,30*c,e,2*e,5*e,10*e,15*e,30*e,f,2*f,4*f,6*f,8*f,12*f,l,2*l,3*l,4*l,5*l,b,2*b];var d=[];function a(p,s,t){var o=Number.MAX_VALUE;var u,r,v;for(var q=0,n=m.length;qC.max)||C.max==null){C.max=y[r][0]}if(r>0){o=Math.abs(y[r][0]-y[r-1][0]);u.intervals.push(o);if(u.frequencies.hasOwnProperty(o)){u.frequencies[o]+=1}else{u.frequencies[o]=1}}x+=o}else{y[r][1]=new h.jsDate(y[r][1]).getTime();A[r][1]=new h.jsDate(y[r][1]).getTime();z[r][1]=new h.jsDate(y[r][1]).getTime();if((y[r][1]!=null&&y[r][1]C.max)||C.max==null){C.max=y[r][1]}if(r>0){o=Math.abs(y[r][1]-y[r-1][1]);u.intervals.push(o);if(u.frequencies.hasOwnProperty(o)){u.frequencies[o]+=1}else{u.frequencies[o]=1}}}x+=o}if(D.renderer.bands){if(D.renderer.bands.hiData.length){var w=D.renderer.bands.hiData;for(var r=0,q=w.length;rC.max)||C.max==null){C.max=w[r][0]}}else{w[r][1]=new h.jsDate(w[r][1]).getTime();if((w[r][1]!=null&&w[r][1]>C.max)||C.max==null){C.max=w[r][1]}}}}if(D.renderer.bands.lowData.length){var w=D.renderer.bands.lowData;for(var r=0,q=w.length;r6){D=6}}var V=new h.jsDate(ae).setDate(1).setHours(0,0,0,0);var q=new h.jsDate(J);var z=new h.jsDate(J).setDate(1).setHours(0,0,0,0);if(q.getTime()!==z.getTime()){z=z.add(1,"month")}var S=z.diff(V,"month");ab=Math.ceil(S/D)+1;this.min=V.getTime();this.max=V.clone().add((ab-1)*D,"month").getTime();this.numberTicks=ab;for(var aa=0;aa200){this.numberTicks=parseInt(3+(n-200)/100,10)}else{this.numberTicks=2}}}O=B/(this.numberTicks-1)/1000;if(this.daTickInterval==null){this.daTickInterval=[O,"seconds"]}for(var aa=0;aa570)?n[o]*0.8:n[o]+0.3*(255-n[o]);n[o]=parseInt(n[o],10)}this.highlightColors.push("rgb("+n[0]+","+n[1]+","+n[2]+")")}}t.postParseOptionsHooks.addOnce(l);t.postInitHooks.addOnce(g);t.eventListenerHooks.addOnce("jqplotMouseMove",b);t.eventListenerHooks.addOnce("jqplotMouseDown",a);t.eventListenerHooks.addOnce("jqplotMouseUp",j);t.eventListenerHooks.addOnce("jqplotClick",f);t.eventListenerHooks.addOnce("jqplotRightClick",m);t.postDrawHooks.addOnce(h)};e.jqplot.DonutRenderer.prototype.setGridData=function(s){var o=[];var t=[];var n=this.startAngle/180*Math.PI;var r=0;this._drawData=false;for(var q=0;q0){o[q]+=o[q-1]}r+=this.data[q][1]}var p=Math.PI*2/o[o.length-1];for(var q=0;q0){o[q]+=o[q-1]}r+=s[q][1]}var p=Math.PI*2/o[o.length-1];for(var q=0;q6.282+this.startAngle){t=6.282+this.startAngle;if(u>t){u=6.281+this.startAngle}}if(u>=t){return}x.beginPath();x.fillStyle=p;x.strokeStyle=p;x.arc(0,0,n,u,t,false);x.lineTo(v*Math.cos(t),v*Math.sin(t));x.arc(0,0,v,t,u,true);x.closePath();if(w){x.fill()}else{x.stroke()}}if(s){for(var q=0;q1&&this.index>0)?this._previousSeries[0]._diameter:this._diameter;this._thickness=this.thickness||(M-this.innerDiameter-2*X*this._numberSeries)/this._numberSeries/2}else{this._thickness=this.thickness||v/2/(this._numberSeries+1)*0.85}var K=this._radius=this._diameter/2;this._innerRadius=this._radius-this._thickness;var o=this.startAngle/180*Math.PI;this._center=[(s-u*q)/2+u*q,(H-u*p)/2+u*p];if(this.shadow){var L="rgba(0,0,0,"+this.shadowAlpha+")";for(var Q=0;Q=this.dataLabelThreshold){var S,U=(A+z)/2,C;if(this.dataLabels=="label"){S=this.dataLabelFormatString||"%s";C=e.jqplot.sprintf(S,V[Q][0])}else{if(this.dataLabels=="value"){S=this.dataLabelFormatString||"%d";C=e.jqplot.sprintf(S,this.data[Q][1])}else{if(this.dataLabels=="percent"){S=this.dataLabelFormatString||"%d%%";C=e.jqplot.sprintf(S,V[Q][2]*100)}else{if(this.dataLabels.constructor==Array){S=this.dataLabelFormatString||"%s";C=e.jqplot.sprintf(S,this.dataLabels[Q])}}}}var n=this._innerRadius+this._thickness*this.dataLabelPositionFactor+this.sliceMargin+this.dataLabelNudge;var F=this._center[0]+Math.cos(U)*n+this.canvas._offsets.left;var E=this._center[1]+Math.sin(U)*n+this.canvas._offsets.top;var D=e(''+C+"").insertBefore(P.eventCanvas._elem);F-=D.width()/2;E-=D.height()/2;F=Math.round(F);E=Math.round(E);D.css({left:F,top:E})}}};e.jqplot.DonutAxisRenderer=function(){e.jqplot.LinearAxisRenderer.call(this)};e.jqplot.DonutAxisRenderer.prototype=new e.jqplot.LinearAxisRenderer();e.jqplot.DonutAxisRenderer.prototype.constructor=e.jqplot.DonutAxisRenderer;e.jqplot.DonutAxisRenderer.prototype.init=function(n){this.tickRenderer=e.jqplot.DonutTickRenderer;e.extend(true,this,n);this._dataBounds={min:0,max:100};this.min=0;this.max=100;this.showTicks=false;this.ticks=[];this.showMark=false;this.show=false};e.jqplot.DonutLegendRenderer=function(){e.jqplot.TableLegendRenderer.call(this)};e.jqplot.DonutLegendRenderer.prototype=new e.jqplot.TableLegendRenderer();e.jqplot.DonutLegendRenderer.prototype.constructor=e.jqplot.DonutLegendRenderer;e.jqplot.DonutLegendRenderer.prototype.init=function(n){this.numberRows=null;this.numberColumns=null;e.extend(true,this,n)};e.jqplot.DonutLegendRenderer.prototype.draw=function(){var q=this;if(this.show){var y=this._series;var B="position:absolute;";B+=(this.background)?"background:"+this.background+";":"";B+=(this.border)?"border:"+this.border+";":"";B+=(this.fontSize)?"font-size:"+this.fontSize+";":"";B+=(this.fontFamily)?"font-family:"+this.fontFamily+";":"";B+=(this.textColor)?"color:"+this.textColor+";":"";B+=(this.marginTop!=null)?"margin-top:"+this.marginTop+";":"";B+=(this.marginBottom!=null)?"margin-bottom:"+this.marginBottom+";":"";B+=(this.marginLeft!=null)?"margin-left:"+this.marginLeft+";":"";B+=(this.marginRight!=null)?"margin-right:"+this.marginRight+";":"";this._elem=e('
');var F=false,x=false,n,v;var z=y[0];var o=new e.jqplot.ColorGenerator(z.seriesColors);if(z.show){var G=z.data;if(this.numberRows){n=this.numberRows;if(!this.numberColumns){v=Math.ceil(G.length/n)}else{v=this.numberColumns}}else{if(this.numberColumns){v=this.numberColumns;n=Math.ceil(G.length/this.numberColumns)}else{n=G.length;v=1}}var E,D,p,t,r,u,w,C;var A=0;for(E=0;E').prependTo(this._elem)}else{p=e('').appendTo(this._elem)}for(D=0;D0){F=true}else{F=false}}else{if(E==n-1){F=false}else{F=true}}w=(F)?this.rowSpacing:"0";t=e('
');r=e('');if(this.escapeHtml){r.text(u)}else{r.html(u)}if(x){r.prependTo(p);t.prependTo(p)}else{t.appendTo(p);r.appendTo(p)}F=true}A++}}}}return this._elem};function c(r,q,o){o=o||{};o.axesDefaults=o.axesDefaults||{};o.legend=o.legend||{};o.seriesDefaults=o.seriesDefaults||{};var n=false;if(o.seriesDefaults.renderer==e.jqplot.DonutRenderer){n=true}else{if(o.series){for(var p=0;p=0.6)?l[3]*0.6:l[3]*(2-l[3]);m.color="rgba("+o[0]+","+o[1]+","+o[2]+","+k+")"}i.color=m.color;i.init();var g=(p.pointIndex>0)?p.pointIndex-1:0;var j=p.pointIndex+2;m._gridData=q.gridData.slice(g,j)}function e(o,l,h,t,m){if(m.plugins.dragable.dragCanvas.isDragging){var u=m.plugins.dragable.dragCanvas;var i=u._neighbor;var w=m.series[i.seriesIndex];var k=w.plugins.dragable;var r=w.gridData;var p=(k.constrainTo=="y")?i.gridData[0]:l.x;var n=(k.constrainTo=="x")?i.gridData[1]:l.y;var g=w._xaxis.series_p2u(p);var q=w._yaxis.series_p2u(n);var v=u._ctx;v.clearRect(0,0,v.canvas.width,v.canvas.height);if(i.pointIndex>0){k._gridData[1]=[p,n]}else{k._gridData[0]=[p,n]}m.series[i.seriesIndex].draw(u._ctx,{gridData:k._gridData,shadow:false,preventJqPlotSeriesDrawTrigger:true,color:k.color,markerOptions:{color:k.color,shadow:false},trendline:{show:false}});m.target.trigger("jqplotSeriesPointChange",[i.seriesIndex,i.pointIndex,[g,q],[p,n]])}else{if(t!=null){var j=m.series[t.seriesIndex];if(j.isDragable){var u=m.plugins.dragable.dragCanvas;if(!u.isOver){u._cursors.push(o.target.style.cursor);o.target.style.cursor="pointer"}u.isOver=true}}else{if(t==null){var u=m.plugins.dragable.dragCanvas;if(u.isOver){o.target.style.cursor=u._cursors.pop();u.isOver=false}}}}}function c(k,i,g,l,j){var m=j.plugins.dragable.dragCanvas;m._cursors.push(k.target.style.cursor);if(l!=null){var o=j.series[l.seriesIndex];var h=o.plugins.dragable;if(o.isDragable&&!m.isDragging){m._neighbor=l;m.isDragging=true;f(j,l);h.markerRenderer.draw(o.gridData[l.pointIndex][0],o.gridData[l.pointIndex][1],m._ctx);k.target.style.cursor="move";j.target.trigger("jqplotDragStart",[l.seriesIndex,l.pointIndex,i,g])}}else{var n=m._ctx;n.clearRect(0,0,n.canvas.width,n.canvas.height);m.isDragging=false}}function a(m,j,g,o,k){if(k.plugins.dragable.dragCanvas.isDragging){var p=k.plugins.dragable.dragCanvas;var q=p._ctx;q.clearRect(0,0,q.canvas.width,q.canvas.height);p.isDragging=false;var h=p._neighbor;var r=k.series[h.seriesIndex];var i=r.plugins.dragable;var n=(i.constrainTo=="y")?h.data[0]:g[r.xaxis];var l=(i.constrainTo=="x")?h.data[1]:g[r.yaxis];r.data[h.pointIndex][0]=n;r.data[h.pointIndex][1]=l;k.drawSeries({preventJqPlotSeriesDrawTrigger:true},h.seriesIndex);p._neighbor=null;m.target.style.cursor=p._cursors.pop();k.target.trigger("jqplotDragStop",[j,g])}}})(jQuery); \ No newline at end of file diff --git a/build/documentation/api/js/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js b/build/documentation/api/js/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js new file mode 100644 index 00000000..dc40b3c4 --- /dev/null +++ b/build/documentation/api/js/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(c){c.jqplot.EnhancedLegendRenderer=function(){c.jqplot.TableLegendRenderer.call(this)};c.jqplot.EnhancedLegendRenderer.prototype=new c.jqplot.TableLegendRenderer();c.jqplot.EnhancedLegendRenderer.prototype.constructor=c.jqplot.EnhancedLegendRenderer;c.jqplot.EnhancedLegendRenderer.prototype.init=function(d){this.numberRows=null;this.numberColumns=null;this.seriesToggle="normal";this.seriesToggleReplot=false;this.disableIEFading=true;c.extend(true,this,d);if(this.seriesToggle){c.jqplot.postDrawHooks.push(b)}};c.jqplot.EnhancedLegendRenderer.prototype.draw=function(m,y){var f=this;if(this.show){var r=this._series;var u;var w="position:absolute;";w+=(this.background)?"background:"+this.background+";":"";w+=(this.border)?"border:"+this.border+";":"";w+=(this.fontSize)?"font-size:"+this.fontSize+";":"";w+=(this.fontFamily)?"font-family:"+this.fontFamily+";":"";w+=(this.textColor)?"color:"+this.textColor+";":"";w+=(this.marginTop!=null)?"margin-top:"+this.marginTop+";":"";w+=(this.marginBottom!=null)?"margin-bottom:"+this.marginBottom+";":"";w+=(this.marginLeft!=null)?"margin-left:"+this.marginLeft+";":"";w+=(this.marginRight!=null)?"margin-right:"+this.marginRight+";":"";this._elem=c('
');if(this.seriesToggle){this._elem.css("z-index","3")}var C=false,q=false,d,o;if(this.numberRows){d=this.numberRows;if(!this.numberColumns){o=Math.ceil(r.length/d)}else{o=this.numberColumns}}else{if(this.numberColumns){o=this.numberColumns;d=Math.ceil(r.length/this.numberColumns)}else{d=r.length;o=1}}var B,z,e,l,k,n,p,t,h,g;var v=0;for(B=r.length-1;B>=0;B--){if(o==1&&r[B]._stack||r[B].renderer.constructor==c.jqplot.BezierCurveRenderer){q=true}}for(B=0;B0){C=true}else{C=false}}else{if(B==d-1){C=false}else{C=true}}p=(C)?this.rowSpacing:"0";l=c(document.createElement("td"));l.addClass("jqplot-table-legend jqplot-table-legend-swatch");l.css({textAlign:"center",paddingTop:p});h=c(document.createElement("div"));h.addClass("jqplot-table-legend-swatch-outline");g=c(document.createElement("div"));g.addClass("jqplot-table-legend-swatch");g.css({backgroundColor:x,borderColor:x});l.append(h.append(g));k=c(document.createElement("td"));k.addClass("jqplot-table-legend jqplot-table-legend-label");k.css("paddingTop",p);if(this.escapeHtml){k.text(n)}else{k.html(n)}if(q){if(this.showLabels){k.prependTo(e)}if(this.showSwatches){l.prependTo(e)}}else{if(this.showSwatches){l.appendTo(e)}if(this.showLabels){k.appendTo(e)}}if(this.seriesToggle){var A;if(typeof(this.seriesToggle)==="string"||typeof(this.seriesToggle)==="number"){if(!c.jqplot.use_excanvas||!this.disableIEFading){A=this.seriesToggle}}if(this.showSwatches){l.bind("click",{series:u,speed:A,plot:y,replot:this.seriesToggleReplot},a);l.addClass("jqplot-seriesToggle")}if(this.showLabels){k.bind("click",{series:u,speed:A,plot:y,replot:this.seriesToggleReplot},a);k.addClass("jqplot-seriesToggle")}if(!u.show&&u.showLabel){l.addClass("jqplot-series-hidden");k.addClass("jqplot-series-hidden")}}C=true}}v++}l=k=h=g=null}}return this._elem};var a=function(j){var i=j.data,m=i.series,k=i.replot,h=i.plot,f=i.speed,l=m.index,g=false;if(m.canvas._elem.is(":hidden")||!m.show){g=true}var e=function(){if(k){var n={};if(c.isPlainObject(k)){c.extend(true,n,k)}h.replot(n);if(g&&f){var d=h.series[l];if(d.shadowCanvas._elem){d.shadowCanvas._elem.hide().fadeIn(f)}d.canvas._elem.hide().fadeIn(f);d.canvas._elem.nextAll(".jqplot-point-label.jqplot-series-"+d.index).hide().fadeIn(f)}}else{var d=h.series[l];if(d.canvas._elem.is(":hidden")||!d.show){if(typeof h.options.legend.showSwatches==="undefined"||h.options.legend.showSwatches===true){h.legend._elem.find("td").eq(l*2).addClass("jqplot-series-hidden")}if(typeof h.options.legend.showLabels==="undefined"||h.options.legend.showLabels===true){h.legend._elem.find("td").eq((l*2)+1).addClass("jqplot-series-hidden")}}else{if(typeof h.options.legend.showSwatches==="undefined"||h.options.legend.showSwatches===true){h.legend._elem.find("td").eq(l*2).removeClass("jqplot-series-hidden")}if(typeof h.options.legend.showLabels==="undefined"||h.options.legend.showLabels===true){h.legend._elem.find("td").eq((l*2)+1).removeClass("jqplot-series-hidden")}}}};m.toggleDisplay(j,e)};var b=function(){if(this.legend.renderer.constructor==c.jqplot.EnhancedLegendRenderer&&this.legend.seriesToggle){var d=this.legend._elem.detach();this.eventCanvas._elem.after(d)}}})(jQuery); \ No newline at end of file diff --git a/build/documentation/api/js/jqplot/plugins/jqplot.funnelRenderer.min.js b/build/documentation/api/js/jqplot/plugins/jqplot.funnelRenderer.min.js new file mode 100644 index 00000000..8a705dea --- /dev/null +++ b/build/documentation/api/js/jqplot/plugins/jqplot.funnelRenderer.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(e){e.jqplot.FunnelRenderer=function(){e.jqplot.LineRenderer.call(this)};e.jqplot.FunnelRenderer.prototype=new e.jqplot.LineRenderer();e.jqplot.FunnelRenderer.prototype.constructor=e.jqplot.FunnelRenderer;e.jqplot.FunnelRenderer.prototype.init=function(p,t){this.padding={top:20,right:20,bottom:20,left:20};this.sectionMargin=6;this.fill=true;this.shadowOffset=2;this.shadowAlpha=0.07;this.shadowDepth=5;this.highlightMouseOver=true;this.highlightMouseDown=false;this.highlightColors=[];this.widthRatio=0.2;this.lineWidth=2;this.dataLabels="percent";this.showDataLabels=false;this.dataLabelFormatString=null;this.dataLabelThreshold=3;this._type="funnel";this.tickRenderer=e.jqplot.FunnelTickRenderer;if(p.highlightMouseDown&&p.highlightMouseOver==null){p.highlightMouseOver=false}e.extend(true,this,p);this._highlightedPoint=null;this._bases=[];this._atot;this._areas=[];this._lengths=[];this._angle;this._dataIndices=[];this._unorderedData=e.extend(true,[],this.data);var o=e.extend(true,[],this.data);for(var r=0;r570)?m[n]*0.8:m[n]+0.4*(255-m[n]);m[n]=parseInt(m[n],10)}this.highlightColors.push("rgb("+m[0]+","+m[1]+","+m[2]+")")}}t.postParseOptionsHooks.addOnce(k);t.postInitHooks.addOnce(g);t.eventListenerHooks.addOnce("jqplotMouseMove",a);t.eventListenerHooks.addOnce("jqplotMouseDown",b);t.eventListenerHooks.addOnce("jqplotMouseUp",j);t.eventListenerHooks.addOnce("jqplotClick",f);t.eventListenerHooks.addOnce("jqplotRightClick",l);t.postDrawHooks.addOnce(h)};e.jqplot.FunnelRenderer.prototype.setGridData=function(o){var n=0;var p=[];for(var m=0;mthis._lengths[Y]*n&&W<100){this._lengths[Y]=this._areas[Y]/(this._bases[Y]-this._lengths[Y]*Math.tan(this._angle));aa=Math.abs(this._lengths[Y]-E);this._bases[Y+1]=this._bases[Y]-(2*this._lengths[Y]*Math.tan(this._angle));E=this._lengths[Y];W++}Q+=this._lengths[Y]}this._vertices=new Array(B.length);var ae=[t,F],ad=[t+this._bases[0],F],ac=[t+(this._bases[0]-this._bases[this._bases.length-1])/2,F+this._length],ab=[ac[0]+this._bases[this._bases.length-1],ac[1]];function V(ag){var x=(ae[1]-ac[1])/(ae[0]-ac[0]);var v=ae[1]-x*ae[0];var ah=ag+ae[1];return[(ah-v)/x,ah]}function D(ag){var x=(ad[1]-ab[1])/(ad[0]-ab[0]);var v=ad[1]-x*ad[0];var ah=ag+ad[1];return[(ah-v)/x,ah]}var T=w,S=u;var Z=0,m=0;for(Y=0;Y0&&Y0&&Y=this.dataLabelThreshold){var K,X;if(this.dataLabels=="label"){K=this.dataLabelFormatString||"%s";X=e.jqplot.sprintf(K,B[Y][0])}else{if(this.dataLabels=="value"){K=this.dataLabelFormatString||"%d";X=e.jqplot.sprintf(K,this.data[Y][1])}else{if(this.dataLabels=="percent"){K=this.dataLabelFormatString||"%d%%";X=e.jqplot.sprintf(K,B[Y][1]*100)}else{if(this.dataLabels.constructor==Array){K=this.dataLabelFormatString||"%s";X=e.jqplot.sprintf(K,this.dataLabels[this._dataIndices[Y]])}}}}var s=(this._radius)*this.dataLabelPositionFactor+this.sliceMargin+this.dataLabelNudge;var T=(U[0][0]+U[1][0])/2+this.canvas._offsets.left;var S=(U[1][1]+U[2][1])/2+this.canvas._offsets.top;var z=e(''+X+"").insertBefore(p.eventCanvas._elem);T-=z.width()/2;S-=z.height()/2;T=Math.round(T);S=Math.round(S);z.css({left:T,top:S})}}};e.jqplot.FunnelAxisRenderer=function(){e.jqplot.LinearAxisRenderer.call(this)};e.jqplot.FunnelAxisRenderer.prototype=new e.jqplot.LinearAxisRenderer();e.jqplot.FunnelAxisRenderer.prototype.constructor=e.jqplot.FunnelAxisRenderer;e.jqplot.FunnelAxisRenderer.prototype.init=function(m){this.tickRenderer=e.jqplot.FunnelTickRenderer;e.extend(true,this,m);this._dataBounds={min:0,max:100};this.min=0;this.max=100;this.showTicks=false;this.ticks=[];this.showMark=false;this.show=false};e.jqplot.FunnelLegendRenderer=function(){e.jqplot.TableLegendRenderer.call(this)};e.jqplot.FunnelLegendRenderer.prototype=new e.jqplot.TableLegendRenderer();e.jqplot.FunnelLegendRenderer.prototype.constructor=e.jqplot.FunnelLegendRenderer;e.jqplot.FunnelLegendRenderer.prototype.init=function(m){this.numberRows=null;this.numberColumns=null;e.extend(true,this,m)};e.jqplot.FunnelLegendRenderer.prototype.draw=function(){var p=this;if(this.show){var x=this._series;var A="position:absolute;";A+=(this.background)?"background:"+this.background+";":"";A+=(this.border)?"border:"+this.border+";":"";A+=(this.fontSize)?"font-size:"+this.fontSize+";":"";A+=(this.fontFamily)?"font-family:"+this.fontFamily+";":"";A+=(this.textColor)?"color:"+this.textColor+";":"";A+=(this.marginTop!=null)?"margin-top:"+this.marginTop+";":"";A+=(this.marginBottom!=null)?"margin-bottom:"+this.marginBottom+";":"";A+=(this.marginLeft!=null)?"margin-left:"+this.marginLeft+";":"";A+=(this.marginRight!=null)?"margin-right:"+this.marginRight+";":"";this._elem=e('
');var E=false,w=false,m,u;var y=x[0];var n=new e.jqplot.ColorGenerator(y.seriesColors);if(y.show){var F=y.data;if(this.numberRows){m=this.numberRows;if(!this.numberColumns){u=Math.ceil(F.length/m)}else{u=this.numberColumns}}else{if(this.numberColumns){u=this.numberColumns;m=Math.ceil(F.length/this.numberColumns)}else{m=F.length;u=1}}var D,C,o,r,q,t,v,B;var z=0;for(D=0;D').prependTo(this._elem)}else{o=e('').appendTo(this._elem)}for(C=0;C0){E=true}else{E=false}}else{if(D==m-1){E=false}else{E=true}}v=(E)?this.rowSpacing:"0";r=e('
');q=e('');if(this.escapeHtml){q.text(t)}else{q.html(t)}if(w){q.prependTo(o);r.prependTo(o)}else{r.appendTo(o);q.appendTo(o)}E=true}z++}}}}return this._elem};function c(q,p,n){n=n||{};n.axesDefaults=n.axesDefaults||{};n.legend=n.legend||{};n.seriesDefaults=n.seriesDefaults||{};var m=false;if(n.seriesDefaults.renderer==e.jqplot.FunnelRenderer){m=true}else{if(n.series){for(var o=0;o=0.6)?l[3]*0.6:l[3]*(2-l[3]);i.color="rgba("+n[0]+","+n[1]+","+n[2]+","+k+")";i.init();i.draw(p.gridData[o.pointIndex][0],p.gridData[o.pointIndex][1],j.highlightCanvas._ctx)}function g(A,q,m){var k=A.plugins.highlighter;var D=k._tooltipElem;var r=q.highlighter||{};var t=d.extend(true,{},k,r);if(t.useAxesFormatters){var w=q._xaxis._ticks[0].formatter;var h=q._yaxis._ticks[0].formatter;var E=q._xaxis._ticks[0].formatString;var s=q._yaxis._ticks[0].formatString;var z;var u=w(E,m.data[0]);var l=[];for(var B=1;B140){h=Math.round(Math.log(this.max/this.min)/Math.log(this.base)+1);if(h<2){h=2}if(C===0){var o=b/(h-1);if(o<100){C=0}else{if(o<190){C=1}else{if(o<250){C=3}else{if(o<600){C=4}else{C=9}}}}}}else{h=2;if(C===0){C=1}C=0}}else{h=this.numberTicks}if(E>=0&&C!==3){this._autoFormatString="%d"}else{if(E<=0&&C===3){var o=-(E-1);this._autoFormatString="%."+Math.abs(E-1)+"f"}else{if(E<0){var o=-E;this._autoFormatString="%."+Math.abs(E)+"f"}else{this._autoFormatString="%d"}}}var O,H,z,p,n,k;for(var K=0;K=0;J--){z=p-k*(J+1);H=new this.tickRenderer(this.tickOptions);if(this._overrideFormatString&&this._autoFormatString!=""){H.formatString=this._autoFormatString}if(!this.showTicks){H.showLabel=false;H.showMark=false}else{if(!this.showTickMarks){H.showMark=false}}H.setTick(z,this.name);this._ticks.push(H)}}}}else{if(this.min!=null&&this.max!=null){var y=a.extend(true,{},this.tickOptions,{name:this.name,value:null});var I,e;if(this.numberTicks==null&&this.tickInterval==null){var D=Math.max(b,g+1);var L=Math.ceil((D-g)/35+1);var B=a.jqplot.LinearTickGenerator.bestConstrainedInterval(this.min,this.max,L);this._autoFormatString=B[3];I=B[2];e=B[4];for(var K=0;K0){c=-n._textRenderer.height*Math.cos(-n._textRenderer.angle)/2}else{c=-n.getHeight()+n._textRenderer.height*Math.cos(n._textRenderer.angle)/2}break;case"middle":c=-n.getHeight()/2;break;default:c=-n.getHeight()/2;break}}else{c=-n.getHeight()/2}var z=this.u2p(n.value)+c+"px";n._elem.css("top",z);n.pack()}}if(o){var x=this._label._elem.outerHeight(true);this._label._elem.css("top",m-g/2-x/2+"px");if(this.name=="yaxis"){this._label._elem.css("left","0px")}else{this._label._elem.css("right","0px")}this._label.pack()}}}}})(jQuery); \ No newline at end of file diff --git a/build/documentation/api/js/jqplot/plugins/jqplot.mekkoAxisRenderer.min.js b/build/documentation/api/js/jqplot/plugins/jqplot.mekkoAxisRenderer.min.js new file mode 100644 index 00000000..420dd13d --- /dev/null +++ b/build/documentation/api/js/jqplot/plugins/jqplot.mekkoAxisRenderer.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(a){a.jqplot.MekkoAxisRenderer=function(){};a.jqplot.MekkoAxisRenderer.prototype.init=function(c){this.tickMode;this.barLabelRenderer=a.jqplot.AxisLabelRenderer;this.barLabels=this.barLabels||[];this.barLabelOptions={};this.tickOptions=a.extend(true,{showGridline:false},this.tickOptions);this._barLabels=[];a.extend(true,this,c);if(this.name=="yaxis"){this.tickOptions.formatString=this.tickOptions.formatString||"%d%"}var b=this._dataBounds;b.min=0;if(this.name=="yaxis"||this.name=="y2axis"){b.max=100;this.tickMode="even"}else{if(this.name=="xaxis"){this.tickMode=(this.tickMode==null)?"bar":this.tickMode;for(var d=0;dk){k=d}}}if(b){c=this._label._elem.outerWidth(true);j=this._label._elem.outerHeight(true)}if(this.name=="xaxis"){k=k+j;this._elem.css({height:k+"px",left:"0px",bottom:"0px"})}else{if(this.name=="x2axis"){k=k+j;this._elem.css({height:k+"px",left:"0px",top:"0px"})}else{if(this.name=="yaxis"){k=k+c;this._elem.css({width:k+"px",left:"0px",top:"0px"});if(b&&this._label.constructor==a.jqplot.AxisLabelRenderer){this._label._elem.css("width",c+"px")}}else{k=k+c;this._elem.css({width:k+"px",right:"0px",top:"0px"});if(b&&this._label.constructor==a.jqplot.AxisLabelRenderer){this._label._elem.css("width",c+"px")}}}}}};a.jqplot.MekkoAxisRenderer.prototype.createTicks=function(){var z=this._ticks;var w=this.ticks;var B=this.name;var y=this._dataBounds;var p,x;var n,r;var d,c;var h,b,s,q;if(w.length){for(s=0;s0){g=Math.max(Math.log(n)/Math.LN10,0.05)}n-=g;r+=g}var k=r-n;var m,o;var v,l,u;var f=[3,5,6,11,21];if(this.name=="yaxis"||this.name=="y2axis"){this.min=0;this.max=100;if(!this.numberTicks){if(this.tickInterval){this.numberTicks=3+Math.ceil(k/this.tickInterval)}else{v=2+Math.ceil((p-(this.tickSpacing-1))/this.tickSpacing);for(s=0;s1){l=u;continue}else{if(u<1){if(Math.abs(l-1)v){h=new this.tickRenderer(this.tickOptions);if(!this.showTicks){h.showLabel=false;h.showMark=false}else{if(!this.showTickMarks){h.showMark=false}}h.setTick(this.max,this.name);this._ticks.push(h)}}else{if(this.tickMode=="even"){this.min=0;this.max=this.max||y.max;var A=2+Math.ceil((p-(this.tickSpacing-1))/this.tickSpacing);k=this.max-this.min;this.numberTicks=A;this.tickInterval=k/(this.numberTicks-1);for(s=0;s0){c=-n._textRenderer.height*Math.cos(-n._textRenderer.angle)/2}else{c=-n.getHeight()+n._textRenderer.height*Math.cos(n._textRenderer.angle)/2}break;case"middle":c=-n.getHeight()/2;break;default:c=-n.getHeight()/2;break}}else{c=-n.getHeight()/2}var D=this.u2p(n.value)+c+"px";n._elem.css("top",D);n.pack()}}if(o){var z=this._label._elem.outerHeight(true);this._label._elem.css("top",m-f/2-z/2+"px");if(this.name=="yaxis"){this._label._elem.css("left","0px")}else{this._label._elem.css("right","0px")}this._label.pack()}}}}})(jQuery); \ No newline at end of file diff --git a/build/documentation/api/js/jqplot/plugins/jqplot.mekkoRenderer.min.js b/build/documentation/api/js/jqplot/plugins/jqplot.mekkoRenderer.min.js new file mode 100644 index 00000000..cece3cd7 --- /dev/null +++ b/build/documentation/api/js/jqplot/plugins/jqplot.mekkoRenderer.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(b){b.jqplot.MekkoRenderer=function(){this.shapeRenderer=new b.jqplot.ShapeRenderer();this.borderColor=null;this.showBorders=true};b.jqplot.MekkoRenderer.prototype.init=function(c,e){this.fill=false;this.fillRect=true;this.strokeRect=true;this.shadow=false;this._xwidth=0;this._xstart=0;b.extend(true,this.renderer,c);var d={lineJoin:"miter",lineCap:"butt",isarc:false,fillRect:this.fillRect,strokeRect:this.strokeRect};this.renderer.shapeRenderer.init(d);e.axes.x2axis._series.push(this);this._type="mekko"};b.jqplot.MekkoRenderer.prototype.setGridData=function(h){var e=this._xaxis.series_u2p;var c=this._yaxis.series_u2p;var g=this._plotData;this.gridData=[];this._xwidth=e(this._sumy)-e(0);if(this.index>0){this._xstart=h.series[this.index-1]._xstart+h.series[this.index-1]._xwidth}var l=this.canvas.getHeight();var d=0;var k;var j;for(var f=0;f');var w=false,n=true,c,l;var p=o[0];var d=new b.jqplot.ColorGenerator(p.seriesColors);if(p.show){var x=p.data;if(this.numberRows){c=this.numberRows;if(!this.numberColumns){l=Math.ceil(x.length/c)}else{l=this.numberColumns}}else{if(this.numberColumns){l=this.numberColumns;c=Math.ceil(x.length/this.numberColumns)}else{c=x.length;l=1}}var v,u,e,h,g,k,m,t;var q=0;for(v=0;v').prependTo(this._elem)}else{e=b('').appendTo(this._elem)}for(u=0;u0){w=true}else{w=false}}else{if(v==c-1){w=false}else{w=true}}m=(w)?this.rowSpacing:"0";h=b('
');g=b('');if(this.escapeHtml){g.text(k)}else{g.html(k)}if(n){g.prependTo(e);h.prependTo(e)}else{h.appendTo(e);g.appendTo(e)}w=true}q++}}e=null;h=null;g=null}}return this._elem};b.jqplot.MekkoLegendRenderer.prototype.pack=function(f){if(this.show){var e={_top:f.top,_left:f.left,_right:f.right,_bottom:this._plotDimensions.height-f.bottom};if(this.placement=="insideGrid"){switch(this.location){case"nw":var d=e._left+this.xoffset;var c=e._top+this.yoffset;this._elem.css("left",d);this._elem.css("top",c);break;case"n":var d=(f.left+(this._plotDimensions.width-f.right))/2-this.getWidth()/2;var c=e._top+this.yoffset;this._elem.css("left",d);this._elem.css("top",c);break;case"ne":var d=f.right+this.xoffset;var c=e._top+this.yoffset;this._elem.css({right:d,top:c});break;case"e":var d=f.right+this.xoffset;var c=(f.top+(this._plotDimensions.height-f.bottom))/2-this.getHeight()/2;this._elem.css({right:d,top:c});break;case"se":var d=f.right+this.xoffset;var c=f.bottom+this.yoffset;this._elem.css({right:d,bottom:c});break;case"s":var d=(f.left+(this._plotDimensions.width-f.right))/2-this.getWidth()/2;var c=f.bottom+this.yoffset;this._elem.css({left:d,bottom:c});break;case"sw":var d=e._left+this.xoffset;var c=f.bottom+this.yoffset;this._elem.css({left:d,bottom:c});break;case"w":var d=e._left+this.xoffset;var c=(f.top+(this._plotDimensions.height-f.bottom))/2-this.getHeight()/2;this._elem.css({left:d,top:c});break;default:var d=e._right-this.xoffset;var c=e._bottom+this.yoffset;this._elem.css({right:d,bottom:c});break}}else{switch(this.location){case"nw":var d=this._plotDimensions.width-e._left+this.xoffset;var c=e._top+this.yoffset;this._elem.css("right",d);this._elem.css("top",c);break;case"n":var d=(f.left+(this._plotDimensions.width-f.right))/2-this.getWidth()/2;var c=this._plotDimensions.height-e._top+this.yoffset;this._elem.css("left",d);this._elem.css("bottom",c);break;case"ne":var d=this._plotDimensions.width-f.right+this.xoffset;var c=e._top+this.yoffset;this._elem.css({left:d,top:c});break;case"e":var d=this._plotDimensions.width-f.right+this.xoffset;var c=(f.top+(this._plotDimensions.height-f.bottom))/2-this.getHeight()/2;this._elem.css({left:d,top:c});break;case"se":var d=this._plotDimensions.width-f.right+this.xoffset;var c=f.bottom+this.yoffset;this._elem.css({left:d,bottom:c});break;case"s":var d=(f.left+(this._plotDimensions.width-f.right))/2-this.getWidth()/2;var c=this._plotDimensions.height-f.bottom+this.yoffset;this._elem.css({left:d,top:c});break;case"sw":var d=this._plotDimensions.width-e._left+this.xoffset;var c=f.bottom+this.yoffset;this._elem.css({right:d,bottom:c});break;case"w":var d=this._plotDimensions.width-e._left+this.xoffset;var c=(f.top+(this._plotDimensions.height-f.bottom))/2-this.getHeight()/2;this._elem.css({right:d,top:c});break;default:var d=e._right-this.xoffset;var c=e._bottom+this.yoffset;this._elem.css({right:d,bottom:c});break}}}};function a(g,f,d){d=d||{};d.axesDefaults=d.axesDefaults||{};d.legend=d.legend||{};d.seriesDefaults=d.seriesDefaults||{};var c=false;if(d.seriesDefaults.renderer==b.jqplot.MekkoRenderer){c=true}else{if(d.series){for(var e=0;e=this.data[0][1]){this.max=this.intervals[this.intervals.length-1][0];this.setmax=false}}else{this.setmax=false}}else{this.min=(this.min==null)?0:this.min;this.setmin=false;if(this.max==null){this.max=this.data[0][1]*1.25;this.setmax=true}else{this.setmax=false}}}};c.jqplot.MeterGaugeRenderer.prototype.setGridData=function(j){var f=[];var k=[];var e=this.startAngle;for(var h=0;h0){f[h]+=f[h-1]}}var g=Math.PI*2/f[f.length-1];for(var h=0;h0){f[h]+=f[h-1]}}var g=Math.PI*2/f[f.length-1];for(var h=0;h=0;h--){e=f/(j[h]*Math.pow(10,g));if(e==4||e==5){return e-1}}return null}c.jqplot.MeterGaugeRenderer.prototype.draw=function(X,aC,ap){var aa;var aM=(ap!=undefined)?ap:{};var ai=0;var ah=0;var at=1;if(ap.legendInfo&&ap.legendInfo.placement=="inside"){var aI=ap.legendInfo;switch(aI.location){case"nw":ai=aI.width+aI.xoffset;break;case"w":ai=aI.width+aI.xoffset;break;case"sw":ai=aI.width+aI.xoffset;break;case"ne":ai=aI.width+aI.xoffset;at=-1;break;case"e":ai=aI.width+aI.xoffset;at=-1;break;case"se":ai=aI.width+aI.xoffset;at=-1;break;case"n":ah=aI.height+aI.yoffset;break;case"s":ah=aI.height+aI.yoffset;at=-1;break;default:break}}if(this.label){this._labelElem=c('
'+this.label+"
");this.canvas._elem.after(this._labelElem)}var m=(aM.shadow!=undefined)?aM.shadow:this.shadow;var N=(aM.showLine!=undefined)?aM.showLine:this.showLine;var I=(aM.fill!=undefined)?aM.fill:this.fill;var K=X.canvas.width;var S=X.canvas.height;if(this.padding==null){this.padding=Math.round(Math.min(K,S)/30)}var Q=K-ai-2*this.padding;var ab=S-ah-2*this.padding;if(this.labelPosition=="bottom"&&this.label){ab-=this._labelElem.outerHeight(true)}var L=Math.min(Q,ab);var ad=L;if(!this.diameter){if(this.semiCircular){if(Q>=2*ab){if(!this.ringWidth){this.ringWidth=2*ab/35}this.needleThickness=this.needleThickness||2+Math.pow(this.ringWidth,0.8);this.innerPad=this.ringWidth/2+this.needleThickness/2+this.needlePad;this.diameter=2*(ab-2*this.innerPad)}else{if(!this.ringWidth){this.ringWidth=Q/35}this.needleThickness=this.needleThickness||2+Math.pow(this.ringWidth,0.8);this.innerPad=this.ringWidth/2+this.needleThickness/2+this.needlePad;this.diameter=Q-2*this.innerPad-this.ringWidth-this.padding}this._center=[(K-at*ai)/2+at*ai,(S+at*ah-this.padding-this.ringWidth-this.innerPad)]}else{if(!this.ringWidth){this.ringWidth=ad/35}this.needleThickness=this.needleThickness||2+Math.pow(this.ringWidth,0.8);this.innerPad=0;this.diameter=ad-this.ringWidth;this._center=[(K-at*ai)/2+at*ai,(S-at*ah)/2+at*ah]}if(this._labelElem&&this.labelPosition=="bottom"){this._center[1]-=this._labelElem.outerHeight(true)}}this._radius=this.diameter/2;this.tickSpacing=6000/this.diameter;if(!this.hubRadius){this.hubRadius=this.diameter/18}this.shadowOffset=0.5+this.ringWidth/9;this.shadowWidth=this.ringWidth*1;this.tickPadding=3+Math.pow(this.diameter/20,0.7);this.tickOuterRadius=this._radius-this.ringWidth/2-this.tickPadding;this.tickLength=(this.showTicks)?this._radius/13:0;if(this.ticks.length==0){var A=this.max,aL=this.min,q=this.setmax,aG=this.setmin,au=(A-aL)*this.tickSpacing/this.span;var aw=Math.floor(parseFloat((Math.log(au)/Math.log(10)).toFixed(11)));var an=(au/Math.pow(10,aw));(an>2&&an<=2.5)?an=2.5:an=Math.ceil(an);var T=this.tickPositions;var aA,ak;for(aa=0;aa0)?aL-aL%au:aL-aL%au-au;if(!this.forceZero){var D=Math.min(aL-aP,0.8*au);var o=Math.floor(D/T[aA]);if(o>1){aP=aP+T[aA]*(o-1);if(parseInt(aP,10)!=aP&&parseInt(aP-T[aA],10)==aP-T[aA]){aP=aP-T[aA]}}}if(aL==aP){aL-=au}else{if(aL-aP>0.23*au){aL=aP}else{aL=aP-au;ak+=1}}ak+=1;var E=aL+(ak-1)*au;if(A>=E){E+=au;ak+=1}if(E-A<0.23*au){E+=au;ak+=1}this.max=A=E;this.min=aL;this.tickInterval=au;this.numberTicks=ak;var O;for(aa=0;aa=E){A=E+au;ak+=1}else{A=E}this.tickInterval=this.tickInterval||au;this.numberTicks=this.numberTicks||ak;var O;for(aa=0;aa1){var aJ=String(P);if(aJ.search(/\./)==-1){var aF=aJ.search(/0+$/);av=(aF>0)?aJ.length-aF-1:0}}M=P/Math.pow(10,av);for(aa=0;aa'+this.ticks[aa][1]+"");this.canvas._elem.after(J);aO=J.outerWidth(true);g=J.outerHeight(true);W=this._tickPoints[aa][0]-aO*(this._tickPoints[aa][2]-Math.PI)/Math.PI-an*Math.cos(this._tickPoints[aa][2]);T=this._tickPoints[aa][1]-g/2+g/2*Math.pow(Math.abs((Math.sin(this._tickPoints[aa][2]))),0.5)+an/3*Math.pow(Math.abs((Math.sin(this._tickPoints[aa][2]))),0.5);J.css({left:W,top:T,color:this.tickColor});G=aO*Math.cos(this._tickPoints[aa][2])+g*Math.sin(Math.PI/2+this._tickPoints[aa][2]/2);n=(G>n)?G:n}}if(this.label&&this.labelPosition=="inside"){var W=this._center[0]+this.canvas._offsets.left;var an=this.tickPadding*(1-1/(this.diameter/80+1));var T=0.5*(this._center[1]+this.canvas._offsets.top-this.hubRadius)+0.5*(this._center[1]+this.canvas._offsets.top-this.tickOuterRadius+this.tickLength+an)+this.labelHeightAdjust;W-=this._labelElem.outerWidth(true)/2;T-=this._labelElem.outerHeight(true)/2;this._labelElem.css({left:W,top:T})}else{if(this.label&&this.labelPosition=="bottom"){var W=this._center[0]+this.canvas._offsets.left-this._labelElem.outerWidth(true)/2;var T=this._center[1]+this.canvas._offsets.top+this.innerPad+this.ringWidth+this.padding+this.labelHeightAdjust;this._labelElem.css({left:W,top:T})}}X.save();var ax=this.intervalInnerRadius||this.hubRadius*1.5;if(this.intervalOuterRadius==null){if(this.showTickLabels){var ag=(this.tickOuterRadius-this.tickLength-this.tickPadding-this.diameter/8)}else{var ag=(this.tickOuterRadius-this.tickLength-this.diameter/16)}}else{var ag=this.intervalOuterRadius}var P=this.max-this.min;var aD=this.intervals[this.intervals.length-1]-this.min;var y,Z,u=this.span*Math.PI/180;for(aa=0;aathis.max+R*3/this.span){ay=this.max+R*3/this.span}if(this.data[0][1]');var f=false,q=false,u,o;var w=p[0];if(w.show){var t=w.data;if(this.numberRows){u=this.numberRows;if(!this.numberColumns){o=Math.ceil(t.length/u)}else{o=this.numberColumns}}else{if(this.numberColumns){o=this.numberColumns;u=Math.ceil(t.length/this.numberColumns)}else{u=t.length;o=1}}var n,m,r,g,e,l,k,h;var v=0;for(n=0;n').prependTo(this._elem)}else{r=c('').appendTo(this._elem)}for(m=0;m0){f=true}else{f=false}}else{if(n==u-1){f=false}else{f=true}}k=(f)?this.rowSpacing:"0";g=c('
');e=c('');if(this.escapeHtml){e.text(l)}else{e.html(l)}if(q){e.prependTo(r);g.prependTo(r)}else{g.appendTo(r);e.appendTo(r)}f=true}v++}}}}return this._elem};function a(j,h,f){f=f||{};f.axesDefaults=f.axesDefaults||{};f.legend=f.legend||{};f.seriesDefaults=f.seriesDefaults||{};f.grid=f.grid||{};var e=false;if(f.seriesDefaults.renderer==c.jqplot.MeterGaugeRenderer){e=true}else{if(f.series){for(var g=0;gb.max||b.max==null){b.max=f[c][1]}}}else{for(var c=0;cb.max||b.max==null){b.max=f[c][2]}}}};a.jqplot.OHLCRenderer.prototype.draw=function(A,N,j){var J=this.data;var v=this._xaxis.min;var z=this._xaxis.max;var l=0;var K=J.length;var p=this._xaxis.series_u2p;var G=this._yaxis.series_u2p;var D,E,f,M,F,n,O,C;var y;var u=this.renderer;var s=(j!=undefined)?j:{};var k=(s.shadow!=undefined)?s.shadow:this.shadow;var B=(s.fill!=undefined)?s.fill:this.fill;var c=(s.fillAndStroke!=undefined)?s.fillAndStroke:this.fillAndStroke;u.bodyWidth=(s.bodyWidth!=undefined)?s.bodyWidth:u.bodyWidth;u.tickLength=(s.tickLength!=undefined)?s.tickLength:u.tickLength;A.save();if(this.show){var m,q,g,Q,t;for(var D=0;Dq){if(u.wickColor){y.color=u.wickColor}else{if(u.downBodyColor){y.color=u.downBodyColor}}f=a.extend(true,{},s,y);u.shapeRenderer.draw(A,[[m,g],[m,q]],f);u.shapeRenderer.draw(A,[[m,t],[m,Q]],f);y={};M=q;F=t-q;if(u.fillDownBody){y.fillRect=true}else{y.strokeRect=true;n=n-this.lineWidth;O=m-n/2}if(u.downBodyColor){y.color=u.downBodyColor;y.fillStyle=u.downBodyColor}C=[O,M,n,F]}else{if(u.wickColor){y.color=u.wickColor}f=a.extend(true,{},s,y);u.shapeRenderer.draw(A,[[m,g],[m,Q]],f);y={};y.fillRect=false;y.strokeRect=false;O=[m-n/2,q];M=[m+n/2,t];n=null;F=null;C=[O,M]}}f=a.extend(true,{},s,y);u.shapeRenderer.draw(A,C,f)}else{E=s.color;if(u.openColor){s.color=u.openColor}if(!u.hlc){u.shapeRenderer.draw(A,[[m-u._tickLength,q],[m,q]],s)}s.color=E;if(u.wickColor){s.color=u.wickColor}u.shapeRenderer.draw(A,[[m,g],[m,Q]],s);s.color=E;if(u.closeColor){s.color=u.closeColor}u.shapeRenderer.draw(A,[[m,t],[m+u._tickLength,t]],s);s.color=E}}}A.restore()};a.jqplot.OHLCRenderer.prototype.drawShadow=function(b,d,c){};a.jqplot.OHLCRenderer.checkOptions=function(d,c,b){if(!b.highlighter){b.highlighter={showMarker:false,tooltipAxes:"y",yvalues:4,formatString:'
date:%s
open:%s
hi:%s
low:%s
close:%s
'}}}})(jQuery); \ No newline at end of file diff --git a/build/documentation/api/js/jqplot/plugins/jqplot.pieRenderer.min.js b/build/documentation/api/js/jqplot/plugins/jqplot.pieRenderer.min.js new file mode 100644 index 00000000..5f08e619 --- /dev/null +++ b/build/documentation/api/js/jqplot/plugins/jqplot.pieRenderer.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(e){e.jqplot.PieRenderer=function(){e.jqplot.LineRenderer.call(this)};e.jqplot.PieRenderer.prototype=new e.jqplot.LineRenderer();e.jqplot.PieRenderer.prototype.constructor=e.jqplot.PieRenderer;e.jqplot.PieRenderer.prototype.init=function(q,u){this.diameter=null;this.padding=20;this.sliceMargin=0;this.fill=true;this.shadowOffset=2;this.shadowAlpha=0.07;this.shadowDepth=5;this.highlightMouseOver=true;this.highlightMouseDown=false;this.highlightColors=[];this.dataLabels="percent";this.showDataLabels=false;this.dataLabelFormatString=null;this.dataLabelThreshold=3;this.dataLabelPositionFactor=0.52;this.dataLabelNudge=2;this.dataLabelCenterOn=true;this.startAngle=0;this.tickRenderer=e.jqplot.PieTickRenderer;this._drawData=true;this._type="pie";if(q.highlightMouseDown&&q.highlightMouseOver==null){q.highlightMouseOver=false}e.extend(true,this,q);if(this.sliceMargin<0){this.sliceMargin=0}this._diameter=null;this._radius=null;this._sliceAngles=[];this._highlightedPoint=null;if(this.highlightColors.length==0){for(var s=0;s570)?o[p]*0.8:o[p]+0.3*(255-o[p]);o[p]=parseInt(o[p],10)}this.highlightColors.push("rgb("+o[0]+","+o[1]+","+o[2]+")")}}this.highlightColorGenerator=new e.jqplot.ColorGenerator(this.highlightColors);u.postParseOptionsHooks.addOnce(m);u.postInitHooks.addOnce(g);u.eventListenerHooks.addOnce("jqplotMouseMove",b);u.eventListenerHooks.addOnce("jqplotMouseDown",a);u.eventListenerHooks.addOnce("jqplotMouseUp",l);u.eventListenerHooks.addOnce("jqplotClick",f);u.eventListenerHooks.addOnce("jqplotRightClick",n);u.postDrawHooks.addOnce(i)};e.jqplot.PieRenderer.prototype.setGridData=function(t){var p=[];var u=[];var o=this.startAngle/180*Math.PI;var s=0;this._drawData=false;for(var r=0;r0){p[r]+=p[r-1]}s+=this.data[r][1]}var q=Math.PI*2/p[p.length-1];for(var r=0;r0){p[r]+=p[r-1]}s+=t[r][1]}var q=Math.PI*2/p[p.length-1];for(var r=0;r0&&s>0.01&&s<6.282){w=parseFloat(p)/2/h(q)}return w}e.jqplot.PieRenderer.prototype.drawSlice=function(B,z,y,u,w){if(this._drawData){var p=this._radius;var A=this.fill;var x=this.lineWidth;var s=this.sliceMargin;if(this.fill==false){s+=this.lineWidth}B.save();B.translate(this._center[0],this._center[1]);var D=j(z,y,this.sliceMargin,this.fill,this.lineWidth);var o=D*Math.cos((z+y)/2);var C=D*Math.sin((z+y)/2);if((y-z)<=Math.PI){p-=D}else{p+=D}B.translate(o,C);if(w){for(var v=0,t=this.shadowDepth;v6.282+this.startAngle){y=6.282+this.startAngle;if(z>y){z=6.281+this.startAngle}}if(z>=y){return}B.beginPath();B.fillStyle=u;B.strokeStyle=u;B.lineWidth=x;B.arc(0,0,r,z,y,false);B.lineTo(0,0);B.closePath();if(A){B.fill()}else{B.stroke()}}};e.jqplot.PieRenderer.prototype.draw=function(B,z,E,o){var W;var H=(E!=undefined)?E:{};var t=0;var s=0;var N=1;var L=new e.jqplot.ColorGenerator(this.seriesColors);if(E.legendInfo&&E.legendInfo.placement=="insideGrid"){var J=E.legendInfo;switch(J.location){case"nw":t=J.width+J.xoffset;break;case"w":t=J.width+J.xoffset;break;case"sw":t=J.width+J.xoffset;break;case"ne":t=J.width+J.xoffset;N=-1;break;case"e":t=J.width+J.xoffset;N=-1;break;case"se":t=J.width+J.xoffset;N=-1;break;case"n":s=J.height+J.yoffset;break;case"s":s=J.height+J.yoffset;N=-1;break;default:break}}var K=(H.shadow!=undefined)?H.shadow:this.shadow;var A=(H.fill!=undefined)?H.fill:this.fill;var C=B.canvas.width;var I=B.canvas.height;var Q=C-t-2*this.padding;var X=I-s-2*this.padding;var M=Math.min(Q,X);var Y=M;this._sliceAngles=[];var v=this.sliceMargin;if(this.fill==false){v+=this.lineWidth}var q;var G=0;var R,aa,Z,ab;var D=this.startAngle/180*Math.PI;for(var W=0,V=z.length;WMath.PI){G=Math.max(q,G)}}if(this.diameter!=null&&this.diameter>0){this._diameter=this.diameter-2*G}else{this._diameter=Y-2*G}if(this._diameter<6){e.jqplot.log("Diameter of pie too small, not rendering.");return}var S=this._radius=this._diameter/2;this._center=[(C-N*t)/2+N*t+G*Math.cos(D),(I-N*s)/2+N*s+G*Math.sin(D)];if(this.shadow){for(var W=0,V=z.length;W=this.dataLabelThreshold){var F,U=(this._sliceAngles[W][0]+this._sliceAngles[W][1])/2,T;if(this.dataLabels=="label"){F=this.dataLabelFormatString||"%s";T=e.jqplot.sprintf(F,z[W][0])}else{if(this.dataLabels=="value"){F=this.dataLabelFormatString||"%d";T=e.jqplot.sprintf(F,this.data[W][1])}else{if(this.dataLabels=="percent"){F=this.dataLabelFormatString||"%d%%";T=e.jqplot.sprintf(F,z[W][2]*100)}else{if(this.dataLabels.constructor==Array){F=this.dataLabelFormatString||"%s";T=e.jqplot.sprintf(F,this.dataLabels[W])}}}}var p=(this._radius)*this.dataLabelPositionFactor+this.sliceMargin+this.dataLabelNudge;var P=this._center[0]+Math.cos(U)*p+this.canvas._offsets.left;var O=this._center[1]+Math.sin(U)*p+this.canvas._offsets.top;var u=e('
'+T+"
").insertBefore(o.eventCanvas._elem);if(this.dataLabelCenterOn){P-=u.width()/2;O-=u.height()/2}else{P-=u.width()*Math.sin(U/2);O-=u.height()/2}P=Math.round(P);O=Math.round(O);u.css({left:P,top:O})}}};e.jqplot.PieAxisRenderer=function(){e.jqplot.LinearAxisRenderer.call(this)};e.jqplot.PieAxisRenderer.prototype=new e.jqplot.LinearAxisRenderer();e.jqplot.PieAxisRenderer.prototype.constructor=e.jqplot.PieAxisRenderer;e.jqplot.PieAxisRenderer.prototype.init=function(o){this.tickRenderer=e.jqplot.PieTickRenderer;e.extend(true,this,o);this._dataBounds={min:0,max:100};this.min=0;this.max=100;this.showTicks=false;this.ticks=[];this.showMark=false;this.show=false};e.jqplot.PieLegendRenderer=function(){e.jqplot.TableLegendRenderer.call(this)};e.jqplot.PieLegendRenderer.prototype=new e.jqplot.TableLegendRenderer();e.jqplot.PieLegendRenderer.prototype.constructor=e.jqplot.PieLegendRenderer;e.jqplot.PieLegendRenderer.prototype.init=function(o){this.numberRows=null;this.numberColumns=null;e.extend(true,this,o)};e.jqplot.PieLegendRenderer.prototype.draw=function(){var r=this;if(this.show){var B=this._series;this._elem=e(document.createElement("table"));this._elem.addClass("jqplot-table-legend");var E={position:"absolute"};if(this.background){E.background=this.background}if(this.border){E.border=this.border}if(this.fontSize){E.fontSize=this.fontSize}if(this.fontFamily){E.fontFamily=this.fontFamily}if(this.textColor){E.textColor=this.textColor}if(this.marginTop!=null){E.marginTop=this.marginTop}if(this.marginBottom!=null){E.marginBottom=this.marginBottom}if(this.marginLeft!=null){E.marginLeft=this.marginLeft}if(this.marginRight!=null){E.marginRight=this.marginRight}this._elem.css(E);var I=false,A=false,o,y;var C=B[0];var p=new e.jqplot.ColorGenerator(C.seriesColors);if(C.show){var J=C.data;if(this.numberRows){o=this.numberRows;if(!this.numberColumns){y=Math.ceil(J.length/o)}else{y=this.numberColumns}}else{if(this.numberColumns){y=this.numberColumns;o=Math.ceil(J.length/this.numberColumns)}else{o=J.length;y=1}}var H,G;var q,w,v;var x,z,F;var D=0;var u,t;for(H=0;H0){I=true}else{I=false}}else{if(H==o-1){I=false}else{I=true}}z=(I)?this.rowSpacing:"0";w=e(document.createElement("td"));w.addClass("jqplot-table-legend jqplot-table-legend-swatch");w.css({textAlign:"center",paddingTop:z});u=e(document.createElement("div"));u.addClass("jqplot-table-legend-swatch-outline");t=e(document.createElement("div"));t.addClass("jqplot-table-legend-swatch");t.css({backgroundColor:F,borderColor:F});w.append(u.append(t));v=e(document.createElement("td"));v.addClass("jqplot-table-legend jqplot-table-legend-label");v.css("paddingTop",z);if(this.escapeHtml){v.text(x)}else{v.html(x)}if(A){v.prependTo(q);w.prependTo(q)}else{w.appendTo(q);v.appendTo(q)}I=true}D++}}}}return this._elem};e.jqplot.PieRenderer.prototype.handleMove=function(q,p,t,s,r){if(s){var o=[s.seriesIndex,s.pointIndex,s.data];r.target.trigger("jqplotDataMouseOver",o);if(r.series[o[0]].highlightMouseOver&&!(o[0]==r.plugins.pieRenderer.highlightedSeriesIndex&&o[1]==r.series[o[0]]._highlightedPoint)){r.target.trigger("jqplotDataHighlight",o);d(r,o[0],o[1])}}else{if(s==null){k(r)}}};function c(s,r,p){p=p||{};p.axesDefaults=p.axesDefaults||{};p.legend=p.legend||{};p.seriesDefaults=p.seriesDefaults||{};var o=false;if(p.seriesDefaults.renderer==e.jqplot.PieRenderer){o=true}else{if(p.series){for(var q=0;qB||s+C>m){z.remove()}z=null;f=null}}};c.jqplot.postSeriesInitHooks.push(c.jqplot.PointLabels.init);c.jqplot.postDrawSeriesHooks.push(c.jqplot.PointLabels.draw)})(jQuery); \ No newline at end of file diff --git a/build/documentation/api/js/jqplot/plugins/jqplot.pyramidAxisRenderer.min.js b/build/documentation/api/js/jqplot/plugins/jqplot.pyramidAxisRenderer.min.js new file mode 100644 index 00000000..e559ddc9 --- /dev/null +++ b/build/documentation/api/js/jqplot/plugins/jqplot.pyramidAxisRenderer.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(e){e.jqplot.PyramidAxisRenderer=function(){e.jqplot.LinearAxisRenderer.call(this)};e.jqplot.PyramidAxisRenderer.prototype=new e.jqplot.LinearAxisRenderer();e.jqplot.PyramidAxisRenderer.prototype.constructor=e.jqplot.PyramidAxisRenderer;e.jqplot.PyramidAxisRenderer.prototype.init=function(f){this.position=null;this.drawBaseline=true;this.baselineWidth=null;this.baselineColor=null;this.tickSpacingFactor=25;this._type="pyramid";this._splitAxis=false;this._splitLength=null;this.category=false;this._autoFormatString="";this._overrideFormatString=false;e.extend(true,this,f);this.renderer.options=f;this.resetDataBounds=this.renderer.resetDataBounds;this.resetDataBounds()};e.jqplot.PyramidAxisRenderer.prototype.resetDataBounds=function(){var h=this._dataBounds;h.min=null;h.max=null;var g;for(var m=0;mh.max)||h.max===null){h.max=g}}else{g=o[k][0];if((g!==null&&gh.max)||h.max===null){h.max=g}}}}};e.jqplot.PyramidAxisRenderer.prototype.draw=function(f,n){if(this.show){this.renderer.createTicks.call(this,n);var m=0;var g;if(this._elem){this._elem.emptyForce();this._elem=null}this._elem=e(document.createElement("div"));this._elem.addClass("jqplot-axis jqplot-"+this.name);this._elem.css("position","absolute");if(this.name=="xaxis"||this.name=="x2axis"){this._elem.width(this._plotDimensions.width)}else{this._elem.height(this._plotDimensions.height)}this.labelOptions.axis=this.name;this._label=new this.labelRenderer(this.labelOptions);if(this._label.show){var l=this._label.draw(f,n);l.appendTo(this._elem);l=null}var k=this._ticks;var j;for(var h=0;hr){I=this.numberTicks-1;for(H=2;H0;H--){v=new this.tickRenderer(this.tickOptions);v.value=this._ticks[H-1].value+this.tickInterval/2;v.label="";v.showLabel=false;v.axis=this.name;this._ticks[H].showGridline=false;this._ticks[H].showMark=false;this._ticks.splice(H,0,v)}v=new this.tickRenderer(this.tickOptions);v.value=this._ticks[0].value-this.tickInterval/2;v.label="";v.showLabel=false;v.axis=this.name;this._ticks.unshift(v);v=new this.tickRenderer(this.tickOptions);v.value=this._ticks[this._ticks.length-1].value+this.tickInterval/2;v.label="";v.showLabel=false;v.axis=this.name;this._ticks.push(v);this.tickInterval=this.tickInterval/2;this.numberTicks=this._ticks.length;this.min=this._ticks[0].value;this.max=this._ticks[this._ticks.length-1].value}}else{if(this.name.charAt(0)==="x"){E=this._plotDimensions.width;var w=Math.max(M.max,Math.abs(M.min));var u=Math.min(M.min,-w);B=u;G=w;y=G-B;if(this.tickOptions==null||!this.tickOptions.formatString){this._overrideFormatString=true}m=30;g=Math.max(E,m+1);j=(g-m)/300;O=e.jqplot.LinearTickGenerator(B,G,j);A=B+y*(this.padMin-1);F=G-y*(this.padMax-1);if(BF){A=B-y*(this.padMin-1);F=G+y*(this.padMax-1);O=e.jqplot.LinearTickGenerator(A,F,j)}this.min=O[0];this.max=O[1];this.numberTicks=O[2];this._autoFormatString=O[3];this.tickInterval=O[4]}else{E=this._plotDimensions.height;B=M.min;G=M.max;x=this._series[0];this._ticks=[];y=G-B;if(d[y]){y+=1;G+=1}this.max=G;this.min=B;r=Math.round(2+E/this.tickSpacingFactor);if(y+1<=r){this.numberTicks=y+1;this.tickInterval=1}else{for(var H=r;H>1;H--){if(y/(H-1)===Math.round(y/(H-1))){this.numberTicks=H;this.tickInterval=y/(H-1);break}}}}if(this._overrideFormatString&&this._autoFormatString!=""){this.tickOptions=this.tickOptions||{};this.tickOptions.formatString=this._autoFormatString}var f;for(H=0;Ho){o=j}}}if(this.name==="yMidAxis"){for(m=0;m0){f=-q._textRenderer.height*Math.cos(-q._textRenderer.angle)/2}else{f=-q.getHeight()+q._textRenderer.height*Math.cos(q._textRenderer.angle)/2}break;case"middle":f=-q.getHeight()/2;break;default:f=-q.getHeight()/2;break}}else{f=-q.getHeight()/2}var C=this.u2p(q.value)+f+"px";q._elem.css("top",C);q.pack()}}if(r){var y=this._label._elem.outerHeight(true);if(this.name!=="yMidAxis"){this._label._elem.css("top",o-k/2-y/2+"px")}if(this.name=="yaxis"){this._label._elem.css("left","0px")}else{if(this.name!=="yMidAxis"){this._label._elem.css("right","0px")}}this._label.pack()}}}B=null}})(jQuery); \ No newline at end of file diff --git a/build/documentation/api/js/jqplot/plugins/jqplot.pyramidGridRenderer.min.js b/build/documentation/api/js/jqplot/plugins/jqplot.pyramidGridRenderer.min.js new file mode 100644 index 00000000..e2837a6c --- /dev/null +++ b/build/documentation/api/js/jqplot/plugins/jqplot.pyramidGridRenderer.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(a){a.jqplot.PyramidGridRenderer=function(){a.jqplot.CanvasGridRenderer.call(this)};a.jqplot.PyramidGridRenderer.prototype=new a.jqplot.CanvasGridRenderer();a.jqplot.PyramidGridRenderer.prototype.constructor=a.jqplot.PyramidGridRenderer;a.jqplot.CanvasGridRenderer.prototype.init=function(c){this._ctx;this.plotBands={show:false,color:"rgb(230, 219, 179)",axis:"y",start:null,interval:10};a.extend(true,this,c);var b={lineJoin:"miter",lineCap:"round",fill:false,isarc:false,angle:this.shadowAngle,offset:this.shadowOffset,alpha:this.shadowAlpha,depth:this.shadowDepth,lineWidth:this.shadowWidth,closePath:false,strokeStyle:this.shadowColor};this.renderer.shadowRenderer.init(b)};a.jqplot.PyramidGridRenderer.prototype.draw=function(){this._ctx=this._elem.get(0).getContext("2d");var D=this._ctx;var G=this._axes;var q=G.xaxis.u2p;var J=G.yMidAxis.u2p;var l=G.xaxis.max/1000;var u=q(0);var f=q(l);var r=["xaxis","yaxis","x2axis","y2axis","yMidAxis"];D.save();D.clearRect(0,0,this._plotDimensions.width,this._plotDimensions.height);D.fillStyle=this.backgroundColor||this.background;D.fillRect(this._left,this._top,this._width,this._height);if(this.plotBands.show){D.save();var c=this.plotBands;D.fillStyle=c.color;var d;var o,n,p,I;if(c.axis.charAt(0)==="x"){if(G.xaxis.show){d=G.xaxis}}else{if(c.axis.charAt(0)==="y"){if(G.yaxis.show){d=G.yaxis}else{if(G.y2axis.show){d=G.y2axis}else{if(G.yMidAxis.show){d=G.yMidAxis}}}}}if(d!==undefined){var g=c.start;if(g===null){g=d.min}for(var H=g;H0;H--){var O=r[H-1];var d=G[O];var M=d._ticks;var B=M.length;if(d.show){if(d.drawBaseline){var N={};if(d.baselineWidth!==null){N.lineWidth=d.baselineWidth}if(d.baselineColor!==null){N.strokeStyle=d.baselineColor}switch(O){case"xaxis":if(G.yMidAxis.show){z(this._left,this._bottom,u,this._bottom,N);z(f,this._bottom,this._right,this._bottom,N)}else{z(this._left,this._bottom,this._right,this._bottom,N)}break;case"yaxis":z(this._left,this._bottom,this._left,this._top,N);break;case"yMidAxis":z(u,this._bottom,u,this._top,N);z(f,this._bottom,f,this._top,N);break;case"x2axis":if(G.yMidAxis.show){z(this._left,this._top,u,this._top,N);z(f,this._top,this._right,this._top,N)}else{z(this._left,this._bottom,this._right,this._bottom,N)}break;case"y2axis":z(this._right,this._bottom,this._right,this._top,N);break}}for(var E=B;E>0;E--){var v=M[E-1];if(v.show){var k=Math.round(d.u2p(v.value))+0.5;switch(O){case"xaxis":if(v.showGridline&&this.drawGridlines&&(!v.isMinorTick||d.showMinorTicks)){z(k,this._top,k,this._bottom)}if(v.showMark&&v.mark&&(!v.isMinorTick||d.showMinorTicks)){A=v.markSize;C=v.mark;var k=Math.round(d.u2p(v.value))+0.5;switch(C){case"outside":L=this._bottom;K=this._bottom+A;break;case"inside":L=this._bottom-A;K=this._bottom;break;case"cross":L=this._bottom-A;K=this._bottom+A;break;default:L=this._bottom;K=this._bottom+A;break}if(this.shadow){this.renderer.shadowRenderer.draw(D,[[k,L],[k,K]],{lineCap:"butt",lineWidth:this.gridLineWidth,offset:this.gridLineWidth*0.75,depth:2,fill:false,closePath:false})}z(k,L,k,K)}break;case"yaxis":if(v.showGridline&&this.drawGridlines&&(!v.isMinorTick||d.showMinorTicks)){z(this._right,k,this._left,k)}if(v.showMark&&v.mark&&(!v.isMinorTick||d.showMinorTicks)){A=v.markSize;C=v.mark;var k=Math.round(d.u2p(v.value))+0.5;switch(C){case"outside":L=this._left-A;K=this._left;break;case"inside":L=this._left;K=this._left+A;break;case"cross":L=this._left-A;K=this._left+A;break;default:L=this._left-A;K=this._left;break}if(this.shadow){this.renderer.shadowRenderer.draw(D,[[L,k],[K,k]],{lineCap:"butt",lineWidth:this.gridLineWidth*1.5,offset:this.gridLineWidth*0.75,fill:false,closePath:false})}z(L,k,K,k,{strokeStyle:d.borderColor})}break;case"yMidAxis":if(v.showGridline&&this.drawGridlines&&(!v.isMinorTick||d.showMinorTicks)){z(this._left,k,u,k);z(f,k,this._right,k)}if(v.showMark&&v.mark&&(!v.isMinorTick||d.showMinorTicks)){A=v.markSize;C=v.mark;var k=Math.round(d.u2p(v.value))+0.5;L=u;K=u+A;if(this.shadow){this.renderer.shadowRenderer.draw(D,[[L,k],[K,k]],{lineCap:"butt",lineWidth:this.gridLineWidth*1.5,offset:this.gridLineWidth*0.75,fill:false,closePath:false})}z(L,k,K,k,{strokeStyle:d.borderColor});L=f-A;K=f;if(this.shadow){this.renderer.shadowRenderer.draw(D,[[L,k],[K,k]],{lineCap:"butt",lineWidth:this.gridLineWidth*1.5,offset:this.gridLineWidth*0.75,fill:false,closePath:false})}z(L,k,K,k,{strokeStyle:d.borderColor})}break;case"x2axis":if(v.showGridline&&this.drawGridlines&&(!v.isMinorTick||d.showMinorTicks)){z(k,this._bottom,k,this._top)}if(v.showMark&&v.mark&&(!v.isMinorTick||d.showMinorTicks)){A=v.markSize;C=v.mark;var k=Math.round(d.u2p(v.value))+0.5;switch(C){case"outside":L=this._top-A;K=this._top;break;case"inside":L=this._top;K=this._top+A;break;case"cross":L=this._top-A;K=this._top+A;break;default:L=this._top-A;K=this._top;break}if(this.shadow){this.renderer.shadowRenderer.draw(D,[[k,L],[k,K]],{lineCap:"butt",lineWidth:this.gridLineWidth,offset:this.gridLineWidth*0.75,depth:2,fill:false,closePath:false})}z(k,L,k,K)}break;case"y2axis":if(v.showGridline&&this.drawGridlines&&(!v.isMinorTick||d.showMinorTicks)){z(this._left,k,this._right,k)}if(v.showMark&&v.mark&&(!v.isMinorTick||d.showMinorTicks)){A=v.markSize;C=v.mark;var k=Math.round(d.u2p(v.value))+0.5;switch(C){case"outside":L=this._right;K=this._right+A;break;case"inside":L=this._right-A;K=this._right;break;case"cross":L=this._right-A;K=this._right+A;break;default:L=this._right;K=this._right+A;break}if(this.shadow){this.renderer.shadowRenderer.draw(D,[[L,k],[K,k]],{lineCap:"butt",lineWidth:this.gridLineWidth*1.5,offset:this.gridLineWidth*0.75,fill:false,closePath:false})}z(L,k,K,k,{strokeStyle:d.borderColor})}break;default:break}}}v=null}d=null;M=null}D.restore();function z(j,i,e,b,h){D.save();h=h||{};if(h.lineWidth==null||h.lineWidth!=0){a.extend(true,D,h);D.beginPath();D.moveTo(j,i);D.lineTo(e,b);D.stroke()}D.restore()}if(this.shadow){if(G.yMidAxis.show){var F=[[this._left,this._bottom],[u,this._bottom]];this.renderer.shadowRenderer.draw(D,F);var F=[[f,this._bottom],[this._right,this._bottom],[this._right,this._top]];this.renderer.shadowRenderer.draw(D,F);var F=[[u,this._bottom],[u,this._top]];this.renderer.shadowRenderer.draw(D,F)}else{var F=[[this._left,this._bottom],[this._right,this._bottom],[this._right,this._top]];this.renderer.shadowRenderer.draw(D,F)}}if(this.borderWidth!=0&&this.drawBorder){if(G.yMidAxis.show){z(this._left,this._top,u,this._top,{lineCap:"round",strokeStyle:G.x2axis.borderColor,lineWidth:G.x2axis.borderWidth});z(f,this._top,this._right,this._top,{lineCap:"round",strokeStyle:G.x2axis.borderColor,lineWidth:G.x2axis.borderWidth});z(this._right,this._top,this._right,this._bottom,{lineCap:"round",strokeStyle:G.y2axis.borderColor,lineWidth:G.y2axis.borderWidth});z(this._right,this._bottom,f,this._bottom,{lineCap:"round",strokeStyle:G.xaxis.borderColor,lineWidth:G.xaxis.borderWidth});z(u,this._bottom,this._left,this._bottom,{lineCap:"round",strokeStyle:G.xaxis.borderColor,lineWidth:G.xaxis.borderWidth});z(this._left,this._bottom,this._left,this._top,{lineCap:"round",strokeStyle:G.yaxis.borderColor,lineWidth:G.yaxis.borderWidth});z(u,this._bottom,u,this._top,{lineCap:"round",strokeStyle:G.yaxis.borderColor,lineWidth:G.yaxis.borderWidth});z(f,this._bottom,f,this._top,{lineCap:"round",strokeStyle:G.yaxis.borderColor,lineWidth:G.yaxis.borderWidth})}else{z(this._left,this._top,this._right,this._top,{lineCap:"round",strokeStyle:G.x2axis.borderColor,lineWidth:G.x2axis.borderWidth});z(this._right,this._top,this._right,this._bottom,{lineCap:"round",strokeStyle:G.y2axis.borderColor,lineWidth:G.y2axis.borderWidth});z(this._right,this._bottom,this._left,this._bottom,{lineCap:"round",strokeStyle:G.xaxis.borderColor,lineWidth:G.xaxis.borderWidth});z(this._left,this._bottom,this._left,this._top,{lineCap:"round",strokeStyle:G.yaxis.borderColor,lineWidth:G.yaxis.borderWidth})}}D.restore();D=null;G=null}})(jQuery); \ No newline at end of file diff --git a/build/documentation/api/js/jqplot/plugins/jqplot.pyramidRenderer.min.js b/build/documentation/api/js/jqplot/plugins/jqplot.pyramidRenderer.min.js new file mode 100644 index 00000000..5833af56 --- /dev/null +++ b/build/documentation/api/js/jqplot/plugins/jqplot.pyramidRenderer.min.js @@ -0,0 +1,3 @@ +/* jqPlot 1.0.8r1250 | (c) 2009-2013 Chris Leonello | jplot.com + jsDate | (c) 2010-2013 Chris Leonello + */(function(c){if(c.jqplot.PyramidAxisRenderer===undefined){c.ajax({url:c.jqplot.pluginLocation+"jqplot.pyramidAxisRenderer.js",dataType:"script",async:false})}if(c.jqplot.PyramidGridRenderer===undefined){c.ajax({url:c.jqplot.pluginLocation+"jqplot.pyramidGridRenderer.js",dataType:"script",async:false})}c.jqplot.PyramidRenderer=function(){c.jqplot.LineRenderer.call(this)};c.jqplot.PyramidRenderer.prototype=new c.jqplot.LineRenderer();c.jqplot.PyramidRenderer.prototype.constructor=c.jqplot.PyramidRenderer;c.jqplot.PyramidRenderer.prototype.init=function(j,o){j=j||{};this._type="pyramid";this.barPadding=10;this.barWidth=null;this.fill=true;this.highlightMouseOver=true;this.highlightMouseDown=false;this.highlightColors=[];this.highlightThreshold=2;this.synchronizeHighlight=false;this.offsetBars=false;if(j.highlightMouseDown&&j.highlightMouseOver==null){j.highlightMouseOver=false}this.side="right";c.extend(true,this,j);if(this.side==="left"){this._highlightThreshold=[[-this.highlightThreshold,0],[-this.highlightThreshold,0],[0,0],[0,0]]}else{this._highlightThreshold=[[0,0],[0,0],[this.highlightThreshold,0],[this.highlightThreshold,0]]}this.renderer.options=j;this._highlightedPoint=null;this._dataColors=[];this._barPoints=[];this.fillAxis="y";this._primaryAxis="_yaxis";this._xnudge=0;var n={lineJoin:"miter",lineCap:"butt",fill:this.fill,fillRect:this.fill,isarc:false,strokeStyle:this.color,fillStyle:this.color,closePath:this.fill,lineWidth:this.lineWidth};this.renderer.shapeRenderer.init(n);var m=j.shadowOffset;if(m==null){if(this.lineWidth>2.5){m=1.25*(1+(Math.atan((this.lineWidth/2.5))/0.785398163-1)*0.6)}else{m=1.25*Math.atan((this.lineWidth/2.5))/0.785398163}}var h={lineJoin:"miter",lineCap:"butt",fill:this.fill,fillRect:this.fill,isarc:false,angle:this.shadowAngle,offset:m,alpha:this.shadowAlpha,depth:this.shadowDepth,closePath:this.fill,lineWidth:this.lineWidth};this.renderer.shadowRenderer.init(h);o.postDrawHooks.addOnce(f);o.eventListenerHooks.addOnce("jqplotMouseMove",e);if(this.side==="left"){for(var k=0,g=this.data.length;k=0){s=I[E][0]-L;F=this.barWidth;D=[L,n-y-r,s,F]}else{s=L-I[E][0];F=this.barWidth;D=[I[E][0],n-y-r,s,F]}this._barPoints.push([[D[0],D[1]+F],[D[0],D[1]],[D[0]+s,D[1]],[D[0]+s,D[1]+F]]);if(p){this.renderer.shadowRenderer.draw(B,D)}var g=u.fillStyle||this.color;this._dataColors.push(g);this.renderer.shapeRenderer.draw(B,D,u)}else{if(E===0){D=[[L,j],[I[E][0],j],[I[E][0],I[E][1]-y-r]]}else{if(E=h.synchronizeHighlight&&h.synchronizeHighlight!==l){h=m.series[h.synchronizeHighlight];k={fillStyle:h.highlightColors[j],fillRect:false};h.renderer.shapeRenderer.draw(g._ctx,h._barPoints[j],k)}g=null}function d(j){var g=j.plugins.pyramidRenderer.highlightCanvas;g._ctx.clearRect(0,0,g._ctx.canvas.width,g._ctx.canvas.height);for(var h=0;h)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
a"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="
";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
","
"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
"; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/build/documentation/api/js/jquery-1.7.1.min.js b/build/documentation/api/js/jquery-1.7.1.min.js new file mode 100644 index 00000000..6ede59ce --- /dev/null +++ b/build/documentation/api/js/jquery-1.7.1.min.js @@ -0,0 +1,9270 @@ +/* + * Downloaded from http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js, 2012-02-04 23:26 + */ + +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function( window, undefined ) { + +// Use the correct document accordingly with window argument (sandbox) +var document = window.document, + navigator = window.navigator, + location = window.location; +var jQuery = (function() { + +// Define a local copy of jQuery +var jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // A central reference to the root jQuery(document) + rootjQuery, + + // A simple way to check for HTML strings or ID strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, + + // Check if a string has a non-whitespace character in it + rnotwhite = /\S/, + + // Used for trimming whitespace + trimLeft = /^\s+/, + trimRight = /\s+$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, + rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + + // Useragent RegExp + rwebkit = /(webkit)[ \/]([\w.]+)/, + ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, + rmsie = /(msie) ([\w.]+)/, + rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, + + // Matches dashed string for camelizing + rdashAlpha = /-([a-z]|[0-9])/ig, + rmsPrefix = /^-ms-/, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return ( letter + "" ).toUpperCase(); + }, + + // Keep a UserAgent string for use with jQuery.browser + userAgent = navigator.userAgent, + + // For matching the engine and version of the browser + browserMatch, + + // The deferred used on DOM ready + readyList, + + // The ready event handler + DOMContentLoaded, + + // Save a reference to some core methods + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty, + push = Array.prototype.push, + slice = Array.prototype.slice, + trim = String.prototype.trim, + indexOf = Array.prototype.indexOf, + + // [[Class]] -> type pairs + class2type = {}; + +jQuery.fn = jQuery.prototype = { + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem, ret, doc; + + // Handle $(""), $(null), or $(undefined) + if ( !selector ) { + return this; + } + + // Handle $(DOMElement) + if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + } + + // The body element only exists once, optimize finding it + if ( selector === "body" && !context && document.body ) { + this.context = document; + this[0] = document.body; + this.selector = selector; + this.length = 1; + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + // Are we dealing with HTML string or an ID? + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = quickExpr.exec( selector ); + } + + // Verify a match, and that no context was specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + doc = ( context ? context.ownerDocument || context : document ); + + // If a single string is passed in and it's a single tag + // just do a createElement and skip the rest + ret = rsingleTag.exec( selector ); + + if ( ret ) { + if ( jQuery.isPlainObject( context ) ) { + selector = [ document.createElement( ret[1] ) ]; + jQuery.fn.attr.call( selector, context, true ); + + } else { + selector = [ doc.createElement( ret[1] ) ]; + } + + } else { + ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); + selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes; + } + + return jQuery.merge( this, selector ); + + // HANDLE: $("#id") + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The current version of jQuery being used + jquery: "1.7.1", + + // The default length of a jQuery object is 0 + length: 0, + + // The number of elements contained in the matched element set + size: function() { + return this.length; + }, + + toArray: function() { + return slice.call( this, 0 ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems, name, selector ) { + // Build a new jQuery matched element set + var ret = this.constructor(); + + if ( jQuery.isArray( elems ) ) { + push.apply( ret, elems ); + + } else { + jQuery.merge( ret, elems ); + } + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + ret.context = this.context; + + if ( name === "find" ) { + ret.selector = this.selector + ( this.selector ? " " : "" ) + selector; + } else if ( name ) { + ret.selector = this.selector + "." + name + "(" + selector + ")"; + } + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Attach the listeners + jQuery.bindReady(); + + // Add the callback + readyList.add( fn ); + + return this; + }, + + eq: function( i ) { + i = +i; + return i === -1 ? + this.slice( i ) : + this.slice( i, i + 1 ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ), + "slice", slice.call(arguments).join(",") ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + // Either a released hold or an DOMready/load event and not yet ready + if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready, 1 ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.fireWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger( "ready" ).off( "ready" ); + } + } + }, + + bindReady: function() { + if ( readyList ) { + return; + } + + readyList = jQuery.Callbacks( "once memory" ); + + // Catch cases where $(document).ready() is called after the + // browser event has already occurred. + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + return setTimeout( jQuery.ready, 1 ); + } + + // Mozilla, Opera and webkit nightlies currently support this event + if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", jQuery.ready, false ); + + // If IE event model is used + } else if ( document.attachEvent ) { + // ensure firing before onload, + // maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", DOMContentLoaded ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", jQuery.ready ); + + // If IE and not a frame + // continually check to see if the document is ready + var toplevel = false; + + try { + toplevel = window.frameElement == null; + } catch(e) {} + + if ( document.documentElement.doScroll && toplevel ) { + doScrollCheck(); + } + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + // A crude way of determining if an object is a window + isWindow: function( obj ) { + return obj && typeof obj === "object" && "setInterval" in obj; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + return obj == null ? + String( obj ) : + class2type[ toString.call(obj) ] || "object"; + }, + + isPlainObject: function( obj ) { + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call(obj, "constructor") && + !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + + var key; + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + for ( var name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + parseJSON: function( data ) { + if ( typeof data !== "string" || !data ) { + return null; + } + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + + } + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && rnotwhite.test( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); + }, + + // args is for internal usage only + each: function( object, callback, args ) { + var name, i = 0, + length = object.length, + isObj = length === undefined || jQuery.isFunction( object ); + + if ( args ) { + if ( isObj ) { + for ( name in object ) { + if ( callback.apply( object[ name ], args ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.apply( object[ i++ ], args ) === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isObj ) { + for ( name in object ) { + if ( callback.call( object[ name ], name, object[ name ] ) === false ) { + break; + } + } + } else { + for ( ; i < length; ) { + if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { + break; + } + } + } + } + + return object; + }, + + // Use native String.trim function wherever possible + trim: trim ? + function( text ) { + return text == null ? + "" : + trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); + }, + + // results is for internal usage only + makeArray: function( array, results ) { + var ret = results || []; + + if ( array != null ) { + // The window, strings (and functions) also have 'length' + // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 + var type = jQuery.type( array ); + + if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { + push.call( ret, array ); + } else { + jQuery.merge( ret, array ); + } + } + + return ret; + }, + + inArray: function( elem, array, i ) { + var len; + + if ( array ) { + if ( indexOf ) { + return indexOf.call( array, elem, i ); + } + + len = array.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in array && array[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var i = first.length, + j = 0; + + if ( typeof second.length === "number" ) { + for ( var l = second.length; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var ret = [], retVal; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( var i = 0, length = elems.length; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, key, ret = [], + i = 0, + length = elems.length, + // jquery objects are treated as arrays + isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( key in elems ) { + value = callback( elems[ key ], key, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return ret.concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + if ( typeof context === "string" ) { + var tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + var args = slice.call( arguments, 2 ), + proxy = function() { + return fn.apply( context, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; + + return proxy; + }, + + // Mutifunctional method to get and set values to a collection + // The value/s can optionally be executed if it's a function + access: function( elems, key, value, exec, fn, pass ) { + var length = elems.length; + + // Setting many attributes + if ( typeof key === "object" ) { + for ( var k in key ) { + jQuery.access( elems, k, key[k], exec, fn, value ); + } + return elems; + } + + // Setting one attribute + if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = !pass && exec && jQuery.isFunction(value); + + for ( var i = 0; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + + return elems; + } + + // Getting an attribute + return length ? fn( elems[0], key ) : undefined; + }, + + now: function() { + return ( new Date() ).getTime(); + }, + + // Use of jQuery.browser is frowned upon. + // More details: http://docs.jquery.com/Utilities/jQuery.browser + uaMatch: function( ua ) { + ua = ua.toLowerCase(); + + var match = rwebkit.exec( ua ) || + ropera.exec( ua ) || + rmsie.exec( ua ) || + ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || + []; + + return { browser: match[1] || "", version: match[2] || "0" }; + }, + + sub: function() { + function jQuerySub( selector, context ) { + return new jQuerySub.fn.init( selector, context ); + } + jQuery.extend( true, jQuerySub, this ); + jQuerySub.superclass = this; + jQuerySub.fn = jQuerySub.prototype = this(); + jQuerySub.fn.constructor = jQuerySub; + jQuerySub.sub = this.sub; + jQuerySub.fn.init = function init( selector, context ) { + if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { + context = jQuerySub( context ); + } + + return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); + }; + jQuerySub.fn.init.prototype = jQuerySub.fn; + var rootjQuerySub = jQuerySub(document); + return jQuerySub; + }, + + browser: {} +}); + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +browserMatch = jQuery.uaMatch( userAgent ); +if ( browserMatch.browser ) { + jQuery.browser[ browserMatch.browser ] = true; + jQuery.browser.version = browserMatch.version; +} + +// Deprecated, use jQuery.browser.webkit instead +if ( jQuery.browser.webkit ) { + jQuery.browser.safari = true; +} + +// IE doesn't match non-breaking spaces with \s +if ( rnotwhite.test( "\xA0" ) ) { + trimLeft = /^[\s\xA0]+/; + trimRight = /[\s\xA0]+$/; +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); + +// Cleanup functions for the document ready method +if ( document.addEventListener ) { + DOMContentLoaded = function() { + document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); + jQuery.ready(); + }; + +} else if ( document.attachEvent ) { + DOMContentLoaded = function() { + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( document.readyState === "complete" ) { + document.detachEvent( "onreadystatechange", DOMContentLoaded ); + jQuery.ready(); + } + }; +} + +// The DOM ready check for Internet Explorer +function doScrollCheck() { + if ( jQuery.isReady ) { + return; + } + + try { + // If IE is used, use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + document.documentElement.doScroll("left"); + } catch(e) { + setTimeout( doScrollCheck, 1 ); + return; + } + + // and execute any waiting functions + jQuery.ready(); +} + +return jQuery; + +})(); + + +// String to Object flags format cache +var flagsCache = {}; + +// Convert String-formatted flags into Object-formatted ones and store in cache +function createFlags( flags ) { + var object = flagsCache[ flags ] = {}, + i, length; + flags = flags.split( /\s+/ ); + for ( i = 0, length = flags.length; i < length; i++ ) { + object[ flags[i] ] = true; + } + return object; +} + +/* + * Create a callback list using the following parameters: + * + * flags: an optional list of space-separated flags that will change how + * the callback list behaves + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible flags: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( flags ) { + + // Convert flags from String-formatted to Object-formatted + // (we check in cache first) + flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {}; + + var // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = [], + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list is currently firing + firing, + // First callback to fire (used internally by add and fireWith) + firingStart, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // Add one or several callbacks to the list + add = function( args ) { + var i, + length, + elem, + type, + actual; + for ( i = 0, length = args.length; i < length; i++ ) { + elem = args[ i ]; + type = jQuery.type( elem ); + if ( type === "array" ) { + // Inspect recursively + add( elem ); + } else if ( type === "function" ) { + // Add if not in unique mode and callback is not in + if ( !flags.unique || !self.has( elem ) ) { + list.push( elem ); + } + } + } + }, + // Fire callbacks + fire = function( context, args ) { + args = args || []; + memory = !flags.memory || [ context, args ]; + firing = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) { + memory = true; // Mark as halted + break; + } + } + firing = false; + if ( list ) { + if ( !flags.once ) { + if ( stack && stack.length ) { + memory = stack.shift(); + self.fireWith( memory[ 0 ], memory[ 1 ] ); + } + } else if ( memory === true ) { + self.disable(); + } else { + list = []; + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + var length = list.length; + add( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away, unless previous + // firing was halted (stopOnFalse) + } else if ( memory && memory !== true ) { + firingStart = length; + fire( memory[ 0 ], memory[ 1 ] ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + var args = arguments, + argIndex = 0, + argLength = args.length; + for ( ; argIndex < argLength ; argIndex++ ) { + for ( var i = 0; i < list.length; i++ ) { + if ( args[ argIndex ] === list[ i ] ) { + // Handle firingIndex and firingLength + if ( firing ) { + if ( i <= firingLength ) { + firingLength--; + if ( i <= firingIndex ) { + firingIndex--; + } + } + } + // Remove the element + list.splice( i--, 1 ); + // If we have some unicity property then + // we only need to do this once + if ( flags.unique ) { + break; + } + } + } + } + } + return this; + }, + // Control if a given callback is in the list + has: function( fn ) { + if ( list ) { + var i = 0, + length = list.length; + for ( ; i < length; i++ ) { + if ( fn === list[ i ] ) { + return true; + } + } + } + return false; + }, + // Remove all callbacks from the list + empty: function() { + list = []; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory || memory === true ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( stack ) { + if ( firing ) { + if ( !flags.once ) { + stack.push( [ context, args ] ); + } + } else if ( !( flags.once && memory ) ) { + fire( context, args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!memory; + } + }; + + return self; +}; + + + + +var // Static reference to slice + sliceDeferred = [].slice; + +jQuery.extend({ + + Deferred: function( func ) { + var doneList = jQuery.Callbacks( "once memory" ), + failList = jQuery.Callbacks( "once memory" ), + progressList = jQuery.Callbacks( "memory" ), + state = "pending", + lists = { + resolve: doneList, + reject: failList, + notify: progressList + }, + promise = { + done: doneList.add, + fail: failList.add, + progress: progressList.add, + + state: function() { + return state; + }, + + // Deprecated + isResolved: doneList.fired, + isRejected: failList.fired, + + then: function( doneCallbacks, failCallbacks, progressCallbacks ) { + deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks ); + return this; + }, + always: function() { + deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments ); + return this; + }, + pipe: function( fnDone, fnFail, fnProgress ) { + return jQuery.Deferred(function( newDefer ) { + jQuery.each( { + done: [ fnDone, "resolve" ], + fail: [ fnFail, "reject" ], + progress: [ fnProgress, "notify" ] + }, function( handler, data ) { + var fn = data[ 0 ], + action = data[ 1 ], + returned; + if ( jQuery.isFunction( fn ) ) { + deferred[ handler ](function() { + returned = fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] ); + } + }); + } else { + deferred[ handler ]( newDefer[ action ] ); + } + }); + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + if ( obj == null ) { + obj = promise; + } else { + for ( var key in promise ) { + obj[ key ] = promise[ key ]; + } + } + return obj; + } + }, + deferred = promise.promise({}), + key; + + for ( key in lists ) { + deferred[ key ] = lists[ key ].fire; + deferred[ key + "With" ] = lists[ key ].fireWith; + } + + // Handle state + deferred.done( function() { + state = "resolved"; + }, failList.disable, progressList.lock ).fail( function() { + state = "rejected"; + }, doneList.disable, progressList.lock ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( firstParam ) { + var args = sliceDeferred.call( arguments, 0 ), + i = 0, + length = args.length, + pValues = new Array( length ), + count = length, + pCount = length, + deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? + firstParam : + jQuery.Deferred(), + promise = deferred.promise(); + function resolveFunc( i ) { + return function( value ) { + args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + if ( !( --count ) ) { + deferred.resolveWith( deferred, args ); + } + }; + } + function progressFunc( i ) { + return function( value ) { + pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; + deferred.notifyWith( promise, pValues ); + }; + } + if ( length > 1 ) { + for ( ; i < length; i++ ) { + if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) { + args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) ); + } else { + --count; + } + } + if ( !count ) { + deferred.resolveWith( deferred, args ); + } + } else if ( deferred !== firstParam ) { + deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); + } + return promise; + } +}); + + + + +jQuery.support = (function() { + + var support, + all, + a, + select, + opt, + input, + marginDiv, + fragment, + tds, + events, + eventName, + i, + isSupported, + div = document.createElement( "div" ), + documentElement = document.documentElement; + + // Preliminary tests + div.setAttribute("className", "t"); + div.innerHTML = "
a"; + + all = div.getElementsByTagName( "*" ); + a = div.getElementsByTagName( "a" )[ 0 ]; + + // Can't get basic test support + if ( !all || !all.length || !a ) { + return {}; + } + + // First batch of supports tests + select = document.createElement( "select" ); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName( "input" )[ 0 ]; + + support = { + // IE strips leading whitespace when .innerHTML is used + leadingWhitespace: ( div.firstChild.nodeType === 3 ), + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + tbody: !div.getElementsByTagName("tbody").length, + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + htmlSerialize: !!div.getElementsByTagName("link").length, + + // Get the style information from getAttribute + // (IE uses .cssText instead) + style: /top/.test( a.getAttribute("style") ), + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + hrefNormalized: ( a.getAttribute("href") === "/a" ), + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + opacity: /^0.55/.test( a.style.opacity ), + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + cssFloat: !!a.style.cssFloat, + + // Make sure that if no value is specified for a checkbox + // that it defaults to "on". + // (WebKit defaults to "" instead) + checkOn: ( input.value === "on" ), + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + optSelected: opt.selected, + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + getSetAttribute: div.className !== "t", + + // Tests for enctype support on a form(#6743) + enctype: !!document.createElement("form").enctype, + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>", + + // Will be defined later + submitBubbles: true, + changeBubbles: true, + focusinBubbles: false, + deleteExpando: true, + noCloneEvent: true, + inlineBlockNeedsLayout: false, + shrinkWrapBlocks: false, + reliableMarginRight: true + }; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Test to see if it's possible to delete an expando from an element + // Fails in Internet Explorer + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { + div.attachEvent( "onclick", function() { + // Cloning a node shouldn't copy over any + // bound event handlers (IE does this) + support.noCloneEvent = false; + }); + div.cloneNode( true ).fireEvent( "onclick" ); + } + + // Check if a radio maintains its value + // after being appended to the DOM + input = document.createElement("input"); + input.value = "t"; + input.setAttribute("type", "radio"); + support.radioValue = input.value === "t"; + + input.setAttribute("checked", "checked"); + div.appendChild( input ); + fragment = document.createDocumentFragment(); + fragment.appendChild( div.lastChild ); + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + fragment.removeChild( input ); + fragment.appendChild( div ); + + div.innerHTML = ""; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. For more + // info see bug #3333 + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + if ( window.getComputedStyle ) { + marginDiv = document.createElement( "div" ); + marginDiv.style.width = "0"; + marginDiv.style.marginRight = "0"; + div.style.width = "2px"; + div.appendChild( marginDiv ); + support.reliableMarginRight = + ( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; + } + + // Technique from Juriy Zaytsev + // http://perfectionkills.com/detecting-event-support-without-browser-sniffing/ + // We only care about the case where non-standard event systems + // are used, namely in IE. Short-circuiting here helps us to + // avoid an eval call (in setAttribute) which can cause CSP + // to go haywire. See: https://developer.mozilla.org/en/Security/CSP + if ( div.attachEvent ) { + for( i in { + submit: 1, + change: 1, + focusin: 1 + }) { + eventName = "on" + i; + isSupported = ( eventName in div ); + if ( !isSupported ) { + div.setAttribute( eventName, "return;" ); + isSupported = ( typeof div[ eventName ] === "function" ); + } + support[ i + "Bubbles" ] = isSupported; + } + } + + fragment.removeChild( div ); + + // Null elements to avoid leaks in IE + fragment = select = opt = marginDiv = div = input = null; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, outer, inner, table, td, offsetSupport, + conMarginTop, ptlm, vb, style, html, + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + conMarginTop = 1; + ptlm = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;"; + vb = "visibility:hidden;border:0;"; + style = "style='" + ptlm + "border:5px solid #000;padding:0;'"; + html = "
" + + "" + + "
"; + + container = document.createElement("div"); + container.style.cssText = vb + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px"; + body.insertBefore( container, body.firstChild ); + + // Construct the test element + div = document.createElement("div"); + container.appendChild( div ); + + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + // (only IE 8 fails this test) + div.innerHTML = "
t
"; + tds = div.getElementsByTagName( "td" ); + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Check if empty table cells still have offsetWidth/Height + // (IE <= 8 fail this test) + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Figure out if the W3C box model works as expected + div.innerHTML = ""; + div.style.width = div.style.paddingLeft = "1px"; + jQuery.boxModel = support.boxModel = div.offsetWidth === 2; + + if ( typeof div.style.zoom !== "undefined" ) { + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + // (IE < 8 does this) + div.style.display = "inline"; + div.style.zoom = 1; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = ""; + div.innerHTML = "
"; + support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); + } + + div.style.cssText = ptlm + vb; + div.innerHTML = html; + + outer = div.firstChild; + inner = outer.firstChild; + td = outer.nextSibling.firstChild.firstChild; + + offsetSupport = { + doesNotAddBorder: ( inner.offsetTop !== 5 ), + doesAddBorderForTableAndCells: ( td.offsetTop === 5 ) + }; + + inner.style.position = "fixed"; + inner.style.top = "20px"; + + // safari subtracts parent border width here which is 5px + offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 ); + inner.style.position = inner.style.top = ""; + + outer.style.overflow = "hidden"; + outer.style.position = "relative"; + + offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 ); + offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop ); + + body.removeChild( container ); + div = container = null; + + jQuery.extend( support, offsetSupport ); + }); + + return support; +})(); + + + + +var rbrace = /^(?:\{.*\}|\[.*\])$/, + rmultiDash = /([A-Z])/g; + +jQuery.extend({ + cache: {}, + + // Please use with caution + uuid: 0, + + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", + "applet": true + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var privateCache, thisCache, ret, + internalKey = jQuery.expando, + getByName = typeof name === "string", + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey, + isEvents = name === "events"; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + elem[ internalKey ] = id = ++jQuery.uuid; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + cache[ id ] = {}; + + // Avoids exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + if ( !isNode ) { + cache[ id ].toJSON = jQuery.noop; + } + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + privateCache = thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Users should not attempt to inspect the internal events object using jQuery.data, + // it is undocumented and subject to change. But does anyone listen? No. + if ( isEvents && !thisCache[ name ] ) { + return privateCache.events; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( getByName ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; + }, + + removeData: function( elem, name, pvt /* Internal Use Only */ ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, l, + + // Reference to internal data cache key + internalKey = jQuery.expando, + + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + + // See jQuery.data for more information + id = isNode ? elem[ internalKey ] : internalKey; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split( " " ); + } + } + } + + for ( i = 0, l = name.length; i < l; i++ ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject(cache[ id ]) ) { + return; + } + } + + // Browsers that fail expando deletion also refuse to delete expandos on + // the window, but it will allow it on all other JS objects; other browsers + // don't care + // Ensure that `cache` is not a window object #10080 + if ( jQuery.support.deleteExpando || !cache.setInterval ) { + delete cache[ id ]; + } else { + cache[ id ] = null; + } + + // We destroyed the cache and need to eliminate the expando on the node to avoid + // false lookups in the cache for entries that no longer exist + if ( isNode ) { + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( jQuery.support.deleteExpando ) { + delete elem[ internalKey ]; + } else if ( elem.removeAttribute ) { + elem.removeAttribute( internalKey ); + } else { + elem[ internalKey ] = null; + } + } + }, + + // For internal use only. + _data: function( elem, name, data ) { + return jQuery.data( elem, name, data, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + if ( elem.nodeName ) { + var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; + + if ( match ) { + return !(match === true || elem.getAttribute("classid") !== match); + } + } + + return true; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var parts, attr, name, + data = null; + + if ( typeof key === "undefined" ) { + if ( this.length ) { + data = jQuery.data( this[0] ); + + if ( this[0].nodeType === 1 && !jQuery._data( this[0], "parsedAttrs" ) ) { + attr = this[0].attributes; + for ( var i = 0, l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( this[0], name, data[ name ] ); + } + } + jQuery._data( this[0], "parsedAttrs", true ); + } + } + + return data; + + } else if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + parts = key.split("."); + parts[1] = parts[1] ? "." + parts[1] : ""; + + if ( value === undefined ) { + data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); + + // Try to fetch any internally stored data first + if ( data === undefined && this.length ) { + data = jQuery.data( this[0], key ); + data = dataAttr( this[0], key, data ); + } + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + + } else { + return this.each(function() { + var self = jQuery( this ), + args = [ parts[0], value ]; + + self.triggerHandler( "setData" + parts[1] + "!", args ); + jQuery.data( this, key, value ); + self.triggerHandler( "changeData" + parts[1] + "!", args ); + }); + } + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + jQuery.isNumeric( data ) ? parseFloat( data ) : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + for ( var name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + + + + +function handleQueueMarkDefer( elem, type, src ) { + var deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + defer = jQuery._data( elem, deferDataKey ); + if ( defer && + ( src === "queue" || !jQuery._data(elem, queueDataKey) ) && + ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) { + // Give room for hard-coded callbacks to fire first + // and eventually mark/queue something else on the element + setTimeout( function() { + if ( !jQuery._data( elem, queueDataKey ) && + !jQuery._data( elem, markDataKey ) ) { + jQuery.removeData( elem, deferDataKey, true ); + defer.fire(); + } + }, 0 ); + } +} + +jQuery.extend({ + + _mark: function( elem, type ) { + if ( elem ) { + type = ( type || "fx" ) + "mark"; + jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 ); + } + }, + + _unmark: function( force, elem, type ) { + if ( force !== true ) { + type = elem; + elem = force; + force = false; + } + if ( elem ) { + type = type || "fx"; + var key = type + "mark", + count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 ); + if ( count ) { + jQuery._data( elem, key, count ); + } else { + jQuery.removeData( elem, key, true ); + handleQueueMarkDefer( elem, type, "mark" ); + } + } + }, + + queue: function( elem, type, data ) { + var q; + if ( elem ) { + type = ( type || "fx" ) + "queue"; + q = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !q || jQuery.isArray(data) ) { + q = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + q.push( data ); + } + } + return q || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + fn = queue.shift(), + hooks = {}; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + } + + if ( fn ) { + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + jQuery._data( elem, type + ".run", hooks ); + fn.call( elem, function() { + jQuery.dequeue( elem, type ); + }, hooks ); + } + + if ( !queue.length ) { + jQuery.removeData( elem, type + "queue " + type + ".run", true ); + handleQueueMarkDefer( elem, type, "queue" ); + } + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + } + + if ( data === undefined ) { + return jQuery.queue( this[0], type ); + } + return this.each(function() { + var queue = jQuery.queue( this, type, data ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, object ) { + if ( typeof type !== "string" ) { + object = type; + type = undefined; + } + type = type || "fx"; + var defer = jQuery.Deferred(), + elements = this, + i = elements.length, + count = 1, + deferDataKey = type + "defer", + queueDataKey = type + "queue", + markDataKey = type + "mark", + tmp; + function resolve() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + } + while( i-- ) { + if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || + ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || + jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && + jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) { + count++; + tmp.add( resolve ); + } + } + resolve(); + return defer.promise(); + } +}); + + + + +var rclass = /[\n\t\r]/g, + rspace = /\s+/, + rreturn = /\r/g, + rtype = /^(?:button|input)$/i, + rfocusable = /^(?:button|input|object|select|textarea)$/i, + rclickable = /^a(?:rea)?$/i, + rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + nodeHook, boolHook, fixSpecified; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.attr ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, name, value, true, jQuery.prop ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classNames, i, l, elem, + setClass, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call(this, j, this.className) ); + }); + } + + if ( value && typeof value === "string" ) { + classNames = value.split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 ) { + if ( !elem.className && classNames.length === 1 ) { + elem.className = value; + + } else { + setClass = " " + elem.className + " "; + + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) { + setClass += classNames[ c ] + " "; + } + } + elem.className = jQuery.trim( setClass ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classNames, i, l, elem, className, c, cl; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call(this, j, this.className) ); + }); + } + + if ( (value && typeof value === "string") || value === undefined ) { + classNames = ( value || "" ).split( rspace ); + + for ( i = 0, l = this.length; i < l; i++ ) { + elem = this[ i ]; + + if ( elem.nodeType === 1 && elem.className ) { + if ( value ) { + className = (" " + elem.className + " ").replace( rclass, " " ); + for ( c = 0, cl = classNames.length; c < cl; c++ ) { + className = className.replace(" " + classNames[ c ] + " ", " "); + } + elem.className = jQuery.trim( className ); + + } else { + elem.className = ""; + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isBool = typeof stateVal === "boolean"; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + state = stateVal, + classNames = value.split( rspace ); + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space seperated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + } else if ( type === "undefined" || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // toggle whole className + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var hooks, ret, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var self = jQuery(this), val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, self.val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // attributes.value is undefined in Blackberry 4.7 but + // uses .value. See #6932 + var val = elem.attributes.value; + return !val || val.specified ? elem.value : elem.text; + } + }, + select: { + get: function( elem ) { + var value, i, max, option, + index = elem.selectedIndex, + values = [], + options = elem.options, + one = elem.type === "select-one"; + + // Nothing was selected + if ( index < 0 ) { + return null; + } + + // Loop through all the selected options + i = one ? index : 0; + max = one ? index + 1 : options.length; + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Don't return options that are disabled or in a disabled optgroup + if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && + (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + // Fixes Bug #2551 -- select.val() broken in IE after form.reset() + if ( one && !values.length && options.length ) { + return jQuery( options[ index ] ).val(); + } + + return values; + }, + + set: function( elem, value ) { + var values = jQuery.makeArray( value ); + + jQuery(elem).find("option").each(function() { + this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; + }); + + if ( !values.length ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attrFn: { + val: true, + css: true, + html: true, + text: true, + data: true, + width: true, + height: true, + offset: true + }, + + attr: function( elem, name, value, pass ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( pass && name in jQuery.attrFn ) { + return jQuery( elem )[ name ]( value ); + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( notxml ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + + } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, "" + value ); + return value; + } + + } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + + ret = elem.getAttribute( name ); + + // Non-existent attributes return null, we normalize to undefined + return ret === null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var propName, attrNames, name, l, + i = 0; + + if ( value && elem.nodeType === 1 ) { + attrNames = value.toLowerCase().split( rspace ); + l = attrNames.length; + + for ( ; i < l; i++ ) { + name = attrNames[ i ]; + + if ( name ) { + propName = jQuery.propFix[ name ] || name; + + // See #9699 for explanation of this approach (setting first, then removal) + jQuery.attr( elem, name, "" ); + elem.removeAttribute( getSetAttribute ? name : propName ); + + // Set corresponding property to false for boolean attributes + if ( rboolean.test( name ) && propName in elem ) { + elem[ propName ] = false; + } + } + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + // We can't allow the type property to be changed (since it causes problems in IE) + if ( rtype.test( elem.nodeName ) && elem.parentNode ) { + jQuery.error( "type property can't be changed" ); + } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to it's default in case type is set after value + // This is for element creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + }, + // Use the value property for back compat + // Use the nodeHook for button elements in IE6/7 (#1954) + value: { + get: function( elem, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.get( elem, name ); + } + return name in elem ? + elem.value : + null; + }, + set: function( elem, value, name ) { + if ( nodeHook && jQuery.nodeName( elem, "button" ) ) { + return nodeHook.set( elem, value, name ); + } + // Does not return so that setAttribute is also used + elem.value = value; + } + } + }, + + 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( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + return ( elem[ name ] = value ); + } + + } else { + if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + return elem[ name ]; + } + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + var attributeNode = elem.getAttributeNode("tabindex"); + + return attributeNode && attributeNode.specified ? + parseInt( attributeNode.value, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + undefined; + } + } + } +}); + +// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional) +jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex; + +// Hook for boolean attributes +boolHook = { + get: function( elem, name ) { + // Align boolean attributes with corresponding properties + // Fall back to attribute presence where some booleans are not supported + var attrNode, + property = jQuery.prop( elem, name ); + return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ? + name.toLowerCase() : + undefined; + }, + set: function( elem, value, name ) { + var propName; + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + // value is true since we know at this point it's type boolean and not false + // Set boolean attributes to the same name and set the DOM property + propName = jQuery.propFix[ name ] || name; + if ( propName in elem ) { + // Only set the IDL specifically if it already exists on the element + elem[ propName ] = true; + } + + elem.setAttribute( name, name.toLowerCase() ); + } + return name; + } +}; + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + fixSpecified = { + name: true, + id: true + }; + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = jQuery.valHooks.button = { + get: function( elem, name ) { + var ret; + ret = elem.getAttributeNode( name ); + return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ? + ret.nodeValue : + undefined; + }, + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + ret = document.createAttribute( name ); + elem.setAttributeNode( ret ); + } + return ( ret.nodeValue = value + "" ); + } + }; + + // Apply the nodeHook to tabindex + jQuery.attrHooks.tabindex.set = nodeHook.set; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }); + }); + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + get: nodeHook.get, + set: function( elem, value, name ) { + if ( value === "" ) { + value = "false"; + } + nodeHook.set( elem, value, name ); + } + }; +} + + +// Some attributes require a special call on IE +if ( !jQuery.support.hrefNormalized ) { + jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { + get: function( elem ) { + var ret = elem.getAttribute( name, 2 ); + return ret === null ? undefined : ret; + } + }); + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Normalize to lowercase since IE uppercases css property names + return elem.style.cssText.toLowerCase() || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = "" + value ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }); +} + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +if ( !jQuery.support.checkOn ) { + jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + get: function( elem ) { + // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + } + }; + }); +} +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }); +}); + + + + +var rformElems = /^(?:textarea|input|select)$/i, + rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/, + rhoverHack = /\bhover(\.\S+)?\b/, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/, + quickParse = function( selector ) { + var quick = rquickIs.exec( selector ); + if ( quick ) { + // 0 1 2 3 + // [ _, tag, id, class ] + quick[1] = ( quick[1] || "" ).toLowerCase(); + quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" ); + } + return quick; + }, + quickIs = function( elem, m ) { + var attrs = elem.attributes || {}; + return ( + (!m[1] || elem.nodeName.toLowerCase() === m[1]) && + (!m[2] || (attrs.id || {}).value === m[2]) && + (!m[3] || m[3].test( (attrs[ "class" ] || {}).value )) + ); + }, + hoverHack = function( events ) { + return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" ); + }; + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + add: function( elem, types, handler, data, selector ) { + + var elemData, eventHandle, events, + t, tns, type, namespaces, handleObj, + handleObjIn, quick, handlers, special; + + // Don't attach events to noData or text/comment nodes (allow plain objects tho) + if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + events = elemData.events; + if ( !events ) { + elemData.events = events = {}; + } + eventHandle = elemData.handle; + if ( !eventHandle ) { + elemData.handle = eventHandle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + // jQuery(...).bind("mouseover mouseout", fn); + types = jQuery.trim( hoverHack(types) ).split( " " ); + for ( t = 0; t < types.length; t++ ) { + + tns = rtypenamespace.exec( types[t] ) || []; + type = tns[1]; + namespaces = ( tns[2] || "" ).split( "." ).sort(); + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: tns[1], + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + quick: quickParse( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + handlers = events[ type ]; + if ( !handlers ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + global: {}, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var elemData = jQuery.hasData( elem ) && jQuery._data( elem ), + t, tns, type, origType, namespaces, origCount, + j, events, special, handle, eventType, handleObj; + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = jQuery.trim( hoverHack( types || "" ) ).split(" "); + for ( t = 0; t < types.length; t++ ) { + tns = rtypenamespace.exec( types[t] ) || []; + type = origType = tns[1]; + namespaces = tns[2]; + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector? special.delegateType : special.bindType ) || type; + eventType = events[ type ] || []; + origCount = eventType.length; + namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + + // Remove matching events + for ( j = 0; j < eventType.length; j++ ) { + handleObj = eventType[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !namespaces || namespaces.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + eventType.splice( j--, 1 ); + + if ( handleObj.selector ) { + eventType.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( eventType.length === 0 && origCount !== eventType.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + handle = elemData.handle; + if ( handle ) { + handle.elem = null; + } + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery.removeData( elem, [ "events", "handle" ], true ); + } + }, + + // Events that are safe to short-circuit if no handlers are attached. + // Native DOM events should not be added, they may have inline handlers. + customEvent: { + "getData": true, + "setData": true, + "changeData": true + }, + + trigger: function( event, data, elem, onlyHandlers ) { + // Don't do events on text and comment nodes + if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) { + return; + } + + // Event object or event type + var type = event.type || event, + namespaces = [], + cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType; + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "!" ) >= 0 ) { + // Exclusive events trigger only for the exact event (no namespaces) + type = type.slice(0, -1); + exclusive = true; + } + + if ( type.indexOf( "." ) >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + + if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { + // No jQuery handlers for this event type, and it can't have inline handlers + return; + } + + // Caller can pass in an Event, Object, or just an event type string + event = typeof event === "object" ? + // jQuery.Event object + event[ jQuery.expando ] ? event : + // Object literal + new jQuery.Event( type, event ) : + // Just the event type (string) + new jQuery.Event( type ); + + event.type = type; + event.isTrigger = true; + event.exclusive = exclusive; + event.namespace = namespaces.join( "." ); + event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null; + ontype = type.indexOf( ":" ) < 0 ? "on" + type : ""; + + // Handle a global trigger + if ( !elem ) { + + // TODO: Stop taunting the data cache; remove global events and always attach to document + cache = jQuery.cache; + for ( i in cache ) { + if ( cache[ i ].events && cache[ i ].events[ type ] ) { + jQuery.event.trigger( event, data, cache[ i ].handle.elem, true ); + } + } + return; + } + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data != null ? jQuery.makeArray( data ) : []; + data.unshift( event ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + eventPath = [[ elem, special.bindType || type ]]; + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode; + old = null; + for ( ; cur; cur = cur.parentNode ) { + eventPath.push([ cur, bubbleType ]); + old = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( old && old === elem.ownerDocument ) { + eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]); + } + } + + // Fire handlers on the event path + for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) { + + cur = eventPath[i][0]; + event.type = eventPath[i][1]; + + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + // Note that this is a bare JS function and not a jQuery handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) && + !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + // IE<9 dies on focus/blur to hidden element (#1486) + if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + old = elem[ ontype ]; + + if ( old ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + elem[ type ](); + jQuery.event.triggered = undefined; + + if ( old ) { + elem[ ontype ] = old; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event || window.event ); + + var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []), + delegateCount = handlers.delegateCount, + args = [].slice.call( arguments, 0 ), + run_all = !event.exclusive && !event.namespace, + handlerQueue = [], + i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Determine handlers that should run if there are delegated events + // Avoid disabled elements in IE (#6911) and non-left-click bubbling in Firefox (#3861) + if ( delegateCount && !event.target.disabled && !(event.button && event.type === "click") ) { + + // Pregenerate a single jQuery object for reuse with .is() + jqcur = jQuery(this); + jqcur.context = this.ownerDocument || this; + + for ( cur = event.target; cur != this; cur = cur.parentNode || this ) { + selMatch = {}; + matches = []; + jqcur[0] = cur; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + sel = handleObj.selector; + + if ( selMatch[ sel ] === undefined ) { + selMatch[ sel ] = ( + handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel ) + ); + } + if ( selMatch[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, matches: matches }); + } + } + } + + // Add the remaining (directly-bound) handlers + if ( handlers.length > delegateCount ) { + handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) }); + } + + // Run delegates first; they may want to stop propagation beneath us + for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) { + matched = handlerQueue[ i ]; + event.currentTarget = matched.elem; + + for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) { + handleObj = matched.matches[ j ]; + + // Triggered event must either 1) be non-exclusive and have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) { + + event.data = handleObj.data; + event.handleObj = handleObj; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + event.result = ret; + if ( ret === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + return event.result; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + // *** attrChange attrName relatedNode srcElement are not normalized, non-W3C, deprecated, will be removed in 1.8 *** + 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( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, + originalEvent = event, + fixHook = jQuery.event.fixHooks[ event.type ] || {}, + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = jQuery.Event( originalEvent ); + + for ( i = copy.length; i; ) { + prop = copy[ --i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Fix target property, if necessary (#1925, IE 6/7/8 & Safari2) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Target should not be a text node (#504, Safari) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8) + if ( event.metaKey === undefined ) { + event.metaKey = event.ctrlKey; + } + + return fixHook.filter? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + ready: { + // Make sure the ready event is setup + setup: jQuery.bindReady + }, + + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + + focus: { + delegateType: "focusin" + }, + blur: { + delegateType: "focusout" + }, + + beforeunload: { + setup: function( data, namespaces, eventHandle ) { + // We only want to do this special case on windows + if ( jQuery.isWindow( this ) ) { + this.onbeforeunload = eventHandle; + } + }, + + teardown: function( namespaces, eventHandle ) { + if ( this.onbeforeunload === eventHandle ) { + this.onbeforeunload = null; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +// Some plugins are using, but it's undocumented/deprecated and will be removed. +// The 1.7 special event interface should provide all the hooks needed now. +jQuery.event.handle = jQuery.event.dispatch; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + if ( elem.detachEvent ) { + elem.detachEvent( "on" + type, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +function returnFalse() { + return false; +} +function returnTrue() { + return true; +} + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + preventDefault: function() { + this.isDefaultPrevented = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + + // if preventDefault exists run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // otherwise set the returnValue property of the original event to false (IE) + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + this.isPropagationStopped = returnTrue; + + var e = this.originalEvent; + if ( !e ) { + return; + } + // if stopPropagation exists run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + // otherwise set the cancelBubble property of the original event to true (IE) + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var target = this, + related = event.relatedTarget, + handleObj = event.handleObj, + selector = handleObj.selector, + ret; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !form._submit_attached ) { + jQuery.event.add( form, "submit._submit", function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + }); + form._submit_attached = true; + } + }); + // return undefined since we don't need an event listener + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + jQuery.event.simulate( "change", this, event, true ); + } + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + elem._change_attached = true; + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on.call( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + var handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace? handleObj.type + "." + handleObj.namespace : handleObj.type, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( var type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + live: function( types, data, fn ) { + jQuery( this.context ).on( types, this.selector, data, fn ); + return this; + }, + die: function( types, fn ) { + jQuery( this.context ).off( types, this.selector || "**", fn ); + return this; + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn ); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + if ( this[0] ) { + return jQuery.event.trigger( type, data, this[0], true ); + } + }, + + toggle: function( fn ) { + // Save reference to arguments for access in closure + var args = arguments, + guid = fn.guid || jQuery.guid++, + i = 0, + toggler = function( event ) { + // Figure out which function to execute + var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i; + jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 ); + + // Make sure that clicks stop + event.preventDefault(); + + // and execute the function + return args[ lastToggle ].apply( this, arguments ) || false; + }; + + // link all the functions, so any of them can unbind this click handler + toggler.guid = guid; + while ( i < args.length ) { + args[ i++ ].guid = guid; + } + + return this.click( toggler ); + }, + + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +}); + +jQuery.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( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + if ( fn == null ) { + fn = data; + data = null; + } + + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; + + if ( jQuery.attrFn ) { + jQuery.attrFn[ name ] = true; + } + + if ( rkeyEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks; + } + + if ( rmouseEvent.test( name ) ) { + jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks; + } +}); + + + +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){ + +var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, + expando = "sizcache" + (Math.random() + '').replace('.', ''), + done = 0, + toString = Object.prototype.toString, + hasDuplicate = false, + baseHasDuplicate = true, + rBackslash = /\\/g, + rReturn = /\r\n/g, + rNonWord = /\W/; + +// Here we check if the JavaScript engine is using some sort of +// optimization where it does not always call our comparision +// function. If that is the case, discard the hasDuplicate value. +// Thus far that includes Google Chrome. +[0, 0].sort(function() { + baseHasDuplicate = false; + return 0; +}); + +var Sizzle = function( selector, context, results, seed ) { + results = results || []; + context = context || document; + + var origContext = context; + + if ( context.nodeType !== 1 && context.nodeType !== 9 ) { + return []; + } + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + var m, set, checkSet, extra, ret, cur, pop, i, + prune = true, + contextXML = Sizzle.isXML( context ), + parts = [], + soFar = selector; + + // Reset the position of the chunker regexp (start from head) + do { + chunker.exec( "" ); + m = chunker.exec( soFar ); + + if ( m ) { + soFar = m[3]; + + parts.push( m[1] ); + + if ( m[2] ) { + extra = m[3]; + break; + } + } + } while ( m ); + + if ( parts.length > 1 && origPOS.exec( selector ) ) { + + if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { + set = posProcess( parts[0] + parts[1], context, seed ); + + } else { + set = Expr.relative[ parts[0] ] ? + [ context ] : + Sizzle( parts.shift(), context ); + + while ( parts.length ) { + selector = parts.shift(); + + if ( Expr.relative[ selector ] ) { + selector += parts.shift(); + } + + set = posProcess( selector, set, seed ); + } + } + + } else { + // Take a shortcut and set the context if the root selector is an ID + // (but not if it'll be faster if the inner selector is an ID) + if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && + Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { + + ret = Sizzle.find( parts.shift(), context, contextXML ); + context = ret.expr ? + Sizzle.filter( ret.expr, ret.set )[0] : + ret.set[0]; + } + + if ( context ) { + ret = seed ? + { expr: parts.pop(), set: makeArray(seed) } : + Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); + + set = ret.expr ? + Sizzle.filter( ret.expr, ret.set ) : + ret.set; + + if ( parts.length > 0 ) { + checkSet = makeArray( set ); + + } else { + prune = false; + } + + while ( parts.length ) { + cur = parts.pop(); + pop = cur; + + if ( !Expr.relative[ cur ] ) { + cur = ""; + } else { + pop = parts.pop(); + } + + if ( pop == null ) { + pop = context; + } + + Expr.relative[ cur ]( checkSet, pop, contextXML ); + } + + } else { + checkSet = parts = []; + } + } + + if ( !checkSet ) { + checkSet = set; + } + + if ( !checkSet ) { + Sizzle.error( cur || selector ); + } + + if ( toString.call(checkSet) === "[object Array]" ) { + if ( !prune ) { + results.push.apply( results, checkSet ); + + } else if ( context && context.nodeType === 1 ) { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { + results.push( set[i] ); + } + } + + } else { + for ( i = 0; checkSet[i] != null; i++ ) { + if ( checkSet[i] && checkSet[i].nodeType === 1 ) { + results.push( set[i] ); + } + } + } + + } else { + makeArray( checkSet, results ); + } + + if ( extra ) { + Sizzle( extra, origContext, results, seed ); + Sizzle.uniqueSort( results ); + } + + return results; +}; + +Sizzle.uniqueSort = function( results ) { + if ( sortOrder ) { + hasDuplicate = baseHasDuplicate; + results.sort( sortOrder ); + + if ( hasDuplicate ) { + for ( var i = 1; i < results.length; i++ ) { + if ( results[i] === results[ i - 1 ] ) { + results.splice( i--, 1 ); + } + } + } + } + + return results; +}; + +Sizzle.matches = function( expr, set ) { + return Sizzle( expr, null, null, set ); +}; + +Sizzle.matchesSelector = function( node, expr ) { + return Sizzle( expr, null, null, [node] ).length > 0; +}; + +Sizzle.find = function( expr, context, isXML ) { + var set, i, len, match, type, left; + + if ( !expr ) { + return []; + } + + for ( i = 0, len = Expr.order.length; i < len; i++ ) { + type = Expr.order[i]; + + if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { + left = match[1]; + match.splice( 1, 1 ); + + if ( left.substr( left.length - 1 ) !== "\\" ) { + match[1] = (match[1] || "").replace( rBackslash, "" ); + set = Expr.find[ type ]( match, context, isXML ); + + if ( set != null ) { + expr = expr.replace( Expr.match[ type ], "" ); + break; + } + } + } + } + + if ( !set ) { + set = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( "*" ) : + []; + } + + return { set: set, expr: expr }; +}; + +Sizzle.filter = function( expr, set, inplace, not ) { + var match, anyFound, + type, found, item, filter, left, + i, pass, + old = expr, + result = [], + curLoop = set, + isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); + + while ( expr && set.length ) { + for ( type in Expr.filter ) { + if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { + filter = Expr.filter[ type ]; + left = match[1]; + + anyFound = false; + + match.splice(1,1); + + if ( left.substr( left.length - 1 ) === "\\" ) { + continue; + } + + if ( curLoop === result ) { + result = []; + } + + if ( Expr.preFilter[ type ] ) { + match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); + + if ( !match ) { + anyFound = found = true; + + } else if ( match === true ) { + continue; + } + } + + if ( match ) { + for ( i = 0; (item = curLoop[i]) != null; i++ ) { + if ( item ) { + found = filter( item, match, i, curLoop ); + pass = not ^ found; + + if ( inplace && found != null ) { + if ( pass ) { + anyFound = true; + + } else { + curLoop[i] = false; + } + + } else if ( pass ) { + result.push( item ); + anyFound = true; + } + } + } + } + + if ( found !== undefined ) { + if ( !inplace ) { + curLoop = result; + } + + expr = expr.replace( Expr.match[ type ], "" ); + + if ( !anyFound ) { + return []; + } + + break; + } + } + } + + // Improper expression + if ( expr === old ) { + if ( anyFound == null ) { + Sizzle.error( expr ); + + } else { + break; + } + } + + old = expr; + } + + return curLoop; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Utility function for retreiving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +var getText = Sizzle.getText = function( elem ) { + var i, node, + nodeType = elem.nodeType, + ret = ""; + + if ( nodeType ) { + if ( nodeType === 1 || nodeType === 9 ) { + // Use textContent || innerText for elements + if ( typeof elem.textContent === 'string' ) { + return elem.textContent; + } else if ( typeof elem.innerText === 'string' ) { + // Replace IE's carriage returns + return elem.innerText.replace( rReturn, '' ); + } else { + // Traverse it's children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + } else { + + // If no nodeType, this is expected to be an array + for ( i = 0; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + if ( node.nodeType !== 8 ) { + ret += getText( node ); + } + } + } + return ret; +}; + +var Expr = Sizzle.selectors = { + order: [ "ID", "NAME", "TAG" ], + + match: { + ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, + NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, + ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, + TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, + CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, + POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, + PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ + }, + + leftMatch: {}, + + attrMap: { + "class": "className", + "for": "htmlFor" + }, + + attrHandle: { + href: function( elem ) { + return elem.getAttribute( "href" ); + }, + type: function( elem ) { + return elem.getAttribute( "type" ); + } + }, + + relative: { + "+": function(checkSet, part){ + var isPartStr = typeof part === "string", + isTag = isPartStr && !rNonWord.test( part ), + isPartStrNotTag = isPartStr && !isTag; + + if ( isTag ) { + part = part.toLowerCase(); + } + + for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { + if ( (elem = checkSet[i]) ) { + while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} + + checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? + elem || false : + elem === part; + } + } + + if ( isPartStrNotTag ) { + Sizzle.filter( part, checkSet, true ); + } + }, + + ">": function( checkSet, part ) { + var elem, + isPartStr = typeof part === "string", + i = 0, + l = checkSet.length; + + if ( isPartStr && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + var parent = elem.parentNode; + checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; + } + } + + } else { + for ( ; i < l; i++ ) { + elem = checkSet[i]; + + if ( elem ) { + checkSet[i] = isPartStr ? + elem.parentNode : + elem.parentNode === part; + } + } + + if ( isPartStr ) { + Sizzle.filter( part, checkSet, true ); + } + } + }, + + "": function(checkSet, part, isXML){ + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); + }, + + "~": function( checkSet, part, isXML ) { + var nodeCheck, + doneName = done++, + checkFn = dirCheck; + + if ( typeof part === "string" && !rNonWord.test( part ) ) { + part = part.toLowerCase(); + nodeCheck = part; + checkFn = dirNodeCheck; + } + + checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); + } + }, + + find: { + ID: function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }, + + NAME: function( match, context ) { + if ( typeof context.getElementsByName !== "undefined" ) { + var ret = [], + results = context.getElementsByName( match[1] ); + + for ( var i = 0, l = results.length; i < l; i++ ) { + if ( results[i].getAttribute("name") === match[1] ) { + ret.push( results[i] ); + } + } + + return ret.length === 0 ? null : ret; + } + }, + + TAG: function( match, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( match[1] ); + } + } + }, + preFilter: { + CLASS: function( match, curLoop, inplace, result, not, isXML ) { + match = " " + match[1].replace( rBackslash, "" ) + " "; + + if ( isXML ) { + return match; + } + + for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { + if ( elem ) { + if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { + if ( !inplace ) { + result.push( elem ); + } + + } else if ( inplace ) { + curLoop[i] = false; + } + } + } + + return false; + }, + + ID: function( match ) { + return match[1].replace( rBackslash, "" ); + }, + + TAG: function( match, curLoop ) { + return match[1].replace( rBackslash, "" ).toLowerCase(); + }, + + CHILD: function( match ) { + if ( match[1] === "nth" ) { + if ( !match[2] ) { + Sizzle.error( match[0] ); + } + + match[2] = match[2].replace(/^\+|\s*/g, ''); + + // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' + var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( + match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || + !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); + + // calculate the numbers (first)n+(last) including if they are negative + match[2] = (test[1] + (test[2] || 1)) - 0; + match[3] = test[3] - 0; + } + else if ( match[2] ) { + Sizzle.error( match[0] ); + } + + // TODO: Move to normal caching system + match[0] = done++; + + return match; + }, + + ATTR: function( match, curLoop, inplace, result, not, isXML ) { + var name = match[1] = match[1].replace( rBackslash, "" ); + + if ( !isXML && Expr.attrMap[name] ) { + match[1] = Expr.attrMap[name]; + } + + // Handle if an un-quoted value was used + match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); + + if ( match[2] === "~=" ) { + match[4] = " " + match[4] + " "; + } + + return match; + }, + + PSEUDO: function( match, curLoop, inplace, result, not ) { + if ( match[1] === "not" ) { + // If we're dealing with a complex expression, or a simple one + if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { + match[3] = Sizzle(match[3], null, null, curLoop); + + } else { + var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); + + if ( !inplace ) { + result.push.apply( result, ret ); + } + + return false; + } + + } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { + return true; + } + + return match; + }, + + POS: function( match ) { + match.unshift( true ); + + return match; + } + }, + + filters: { + enabled: function( elem ) { + return elem.disabled === false && elem.type !== "hidden"; + }, + + disabled: function( elem ) { + return elem.disabled === true; + }, + + checked: function( elem ) { + return elem.checked === true; + }, + + selected: function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + parent: function( elem ) { + return !!elem.firstChild; + }, + + empty: function( elem ) { + return !elem.firstChild; + }, + + has: function( elem, i, match ) { + return !!Sizzle( match[3], elem ).length; + }, + + header: function( elem ) { + return (/h\d/i).test( elem.nodeName ); + }, + + text: function( elem ) { + var attr = elem.getAttribute( "type" ), type = elem.type; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); + }, + + radio: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; + }, + + checkbox: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; + }, + + file: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; + }, + + password: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; + }, + + submit: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "submit" === elem.type; + }, + + image: function( elem ) { + return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; + }, + + reset: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && "reset" === elem.type; + }, + + button: function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && "button" === elem.type || name === "button"; + }, + + input: function( elem ) { + return (/input|select|textarea|button/i).test( elem.nodeName ); + }, + + focus: function( elem ) { + return elem === elem.ownerDocument.activeElement; + } + }, + setFilters: { + first: function( elem, i ) { + return i === 0; + }, + + last: function( elem, i, match, array ) { + return i === array.length - 1; + }, + + even: function( elem, i ) { + return i % 2 === 0; + }, + + odd: function( elem, i ) { + return i % 2 === 1; + }, + + lt: function( elem, i, match ) { + return i < match[3] - 0; + }, + + gt: function( elem, i, match ) { + return i > match[3] - 0; + }, + + nth: function( elem, i, match ) { + return match[3] - 0 === i; + }, + + eq: function( elem, i, match ) { + return match[3] - 0 === i; + } + }, + filter: { + PSEUDO: function( elem, match, i, array ) { + var name = match[1], + filter = Expr.filters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + + } else if ( name === "contains" ) { + return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0; + + } else if ( name === "not" ) { + var not = match[3]; + + for ( var j = 0, l = not.length; j < l; j++ ) { + if ( not[j] === elem ) { + return false; + } + } + + return true; + + } else { + Sizzle.error( name ); + } + }, + + CHILD: function( elem, match ) { + var first, last, + doneName, parent, cache, + count, diff, + type = match[1], + node = elem; + + switch ( type ) { + case "only": + case "first": + while ( (node = node.previousSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + if ( type === "first" ) { + return true; + } + + node = elem; + + case "last": + while ( (node = node.nextSibling) ) { + if ( node.nodeType === 1 ) { + return false; + } + } + + return true; + + case "nth": + first = match[2]; + last = match[3]; + + if ( first === 1 && last === 0 ) { + return true; + } + + doneName = match[0]; + parent = elem.parentNode; + + if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) { + count = 0; + + for ( node = parent.firstChild; node; node = node.nextSibling ) { + if ( node.nodeType === 1 ) { + node.nodeIndex = ++count; + } + } + + parent[ expando ] = doneName; + } + + diff = elem.nodeIndex - last; + + if ( first === 0 ) { + return diff === 0; + + } else { + return ( diff % first === 0 && diff / first >= 0 ); + } + } + }, + + ID: function( elem, match ) { + return elem.nodeType === 1 && elem.getAttribute("id") === match; + }, + + TAG: function( elem, match ) { + return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match; + }, + + CLASS: function( elem, match ) { + return (" " + (elem.className || elem.getAttribute("class")) + " ") + .indexOf( match ) > -1; + }, + + ATTR: function( elem, match ) { + var name = match[1], + result = Sizzle.attr ? + Sizzle.attr( elem, name ) : + Expr.attrHandle[ name ] ? + Expr.attrHandle[ name ]( elem ) : + elem[ name ] != null ? + elem[ name ] : + elem.getAttribute( name ), + value = result + "", + type = match[2], + check = match[4]; + + return result == null ? + type === "!=" : + !type && Sizzle.attr ? + result != null : + type === "=" ? + value === check : + type === "*=" ? + value.indexOf(check) >= 0 : + type === "~=" ? + (" " + value + " ").indexOf(check) >= 0 : + !check ? + value && result !== false : + type === "!=" ? + value !== check : + type === "^=" ? + value.indexOf(check) === 0 : + type === "$=" ? + value.substr(value.length - check.length) === check : + type === "|=" ? + value === check || value.substr(0, check.length + 1) === check + "-" : + false; + }, + + POS: function( elem, match, i, array ) { + var name = match[2], + filter = Expr.setFilters[ name ]; + + if ( filter ) { + return filter( elem, i, match, array ); + } + } + } +}; + +var origPOS = Expr.match.POS, + fescape = function(all, num){ + return "\\" + (num - 0 + 1); + }; + +for ( var type in Expr.match ) { + Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); + Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); +} + +var makeArray = function( array, results ) { + array = Array.prototype.slice.call( array, 0 ); + + if ( results ) { + results.push.apply( results, array ); + return results; + } + + return array; +}; + +// Perform a simple check to determine if the browser is capable of +// converting a NodeList to an array using builtin methods. +// Also verifies that the returned array holds DOM nodes +// (which is not the case in the Blackberry browser) +try { + Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; + +// Provide a fallback method if it does not work +} catch( e ) { + makeArray = function( array, results ) { + var i = 0, + ret = results || []; + + if ( toString.call(array) === "[object Array]" ) { + Array.prototype.push.apply( ret, array ); + + } else { + if ( typeof array.length === "number" ) { + for ( var l = array.length; i < l; i++ ) { + ret.push( array[i] ); + } + + } else { + for ( ; array[i]; i++ ) { + ret.push( array[i] ); + } + } + } + + return ret; + }; +} + +var sortOrder, siblingCheck; + +if ( document.documentElement.compareDocumentPosition ) { + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { + return a.compareDocumentPosition ? -1 : 1; + } + + return a.compareDocumentPosition(b) & 4 ? -1 : 1; + }; + +} else { + sortOrder = function( a, b ) { + // The nodes are identical, we can exit early + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Fallback to using sourceIndex (in IE) if it's available on both nodes + } else if ( a.sourceIndex && b.sourceIndex ) { + return a.sourceIndex - b.sourceIndex; + } + + var al, bl, + ap = [], + bp = [], + aup = a.parentNode, + bup = b.parentNode, + cur = aup; + + // If the nodes are siblings (or identical) we can do a quick check + if ( aup === bup ) { + return siblingCheck( a, b ); + + // If no parents were found then the nodes are disconnected + } else if ( !aup ) { + return -1; + + } else if ( !bup ) { + return 1; + } + + // Otherwise they're somewhere else in the tree so we need + // to build up a full list of the parentNodes for comparison + while ( cur ) { + ap.unshift( cur ); + cur = cur.parentNode; + } + + cur = bup; + + while ( cur ) { + bp.unshift( cur ); + cur = cur.parentNode; + } + + al = ap.length; + bl = bp.length; + + // Start walking down the tree looking for a discrepancy + for ( var i = 0; i < al && i < bl; i++ ) { + if ( ap[i] !== bp[i] ) { + return siblingCheck( ap[i], bp[i] ); + } + } + + // We ended someplace up the tree so do a sibling check + return i === al ? + siblingCheck( a, bp[i], -1 ) : + siblingCheck( ap[i], b, 1 ); + }; + + siblingCheck = function( a, b, ret ) { + if ( a === b ) { + return ret; + } + + var cur = a.nextSibling; + + while ( cur ) { + if ( cur === b ) { + return -1; + } + + cur = cur.nextSibling; + } + + return 1; + }; +} + +// Check to see if the browser returns elements by name when +// querying by getElementById (and provide a workaround) +(function(){ + // We're going to inject a fake input element with a specified name + var form = document.createElement("div"), + id = "script" + (new Date()).getTime(), + root = document.documentElement; + + form.innerHTML = ""; + + // Inject it into the root element, check its status, and remove it quickly + root.insertBefore( form, root.firstChild ); + + // The workaround has to do additional checks after a getElementById + // Which slows things down for other browsers (hence the branching) + if ( document.getElementById( id ) ) { + Expr.find.ID = function( match, context, isXML ) { + if ( typeof context.getElementById !== "undefined" && !isXML ) { + var m = context.getElementById(match[1]); + + return m ? + m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? + [m] : + undefined : + []; + } + }; + + Expr.filter.ID = function( elem, match ) { + var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); + + return elem.nodeType === 1 && node && node.nodeValue === match; + }; + } + + root.removeChild( form ); + + // release memory in IE + root = form = null; +})(); + +(function(){ + // Check to see if the browser returns only elements + // when doing getElementsByTagName("*") + + // Create a fake element + var div = document.createElement("div"); + div.appendChild( document.createComment("") ); + + // Make sure no comments are found + if ( div.getElementsByTagName("*").length > 0 ) { + Expr.find.TAG = function( match, context ) { + var results = context.getElementsByTagName( match[1] ); + + // Filter out possible comments + if ( match[1] === "*" ) { + var tmp = []; + + for ( var i = 0; results[i]; i++ ) { + if ( results[i].nodeType === 1 ) { + tmp.push( results[i] ); + } + } + + results = tmp; + } + + return results; + }; + } + + // Check to see if an attribute returns normalized href attributes + div.innerHTML = ""; + + if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && + div.firstChild.getAttribute("href") !== "#" ) { + + Expr.attrHandle.href = function( elem ) { + return elem.getAttribute( "href", 2 ); + }; + } + + // release memory in IE + div = null; +})(); + +if ( document.querySelectorAll ) { + (function(){ + var oldSizzle = Sizzle, + div = document.createElement("div"), + id = "__sizzle__"; + + div.innerHTML = "

"; + + // Safari can't handle uppercase or unicode characters when + // in quirks mode. + if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { + return; + } + + Sizzle = function( query, context, extra, seed ) { + context = context || document; + + // Only use querySelectorAll on non-XML documents + // (ID selectors don't work in non-HTML documents) + if ( !seed && !Sizzle.isXML(context) ) { + // See if we find a selector to speed up + var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); + + if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { + // Speed-up: Sizzle("TAG") + if ( match[1] ) { + return makeArray( context.getElementsByTagName( query ), extra ); + + // Speed-up: Sizzle(".CLASS") + } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { + return makeArray( context.getElementsByClassName( match[2] ), extra ); + } + } + + if ( context.nodeType === 9 ) { + // Speed-up: Sizzle("body") + // The body element only exists once, optimize finding it + if ( query === "body" && context.body ) { + return makeArray( [ context.body ], extra ); + + // Speed-up: Sizzle("#ID") + } else if ( match && match[3] ) { + var elem = context.getElementById( match[3] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id === match[3] ) { + return makeArray( [ elem ], extra ); + } + + } else { + return makeArray( [], extra ); + } + } + + try { + return makeArray( context.querySelectorAll(query), extra ); + } catch(qsaError) {} + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + var oldContext = context, + old = context.getAttribute( "id" ), + nid = old || id, + hasParent = context.parentNode, + relativeHierarchySelector = /^\s*[+~]/.test( query ); + + if ( !old ) { + context.setAttribute( "id", nid ); + } else { + nid = nid.replace( /'/g, "\\$&" ); + } + if ( relativeHierarchySelector && hasParent ) { + context = context.parentNode; + } + + try { + if ( !relativeHierarchySelector || hasParent ) { + return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); + } + + } catch(pseudoError) { + } finally { + if ( !old ) { + oldContext.removeAttribute( "id" ); + } + } + } + } + + return oldSizzle(query, context, extra, seed); + }; + + for ( var prop in oldSizzle ) { + Sizzle[ prop ] = oldSizzle[ prop ]; + } + + // release memory in IE + div = null; + })(); +} + +(function(){ + var html = document.documentElement, + matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; + + if ( matches ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9 fails this) + var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), + pseudoWorks = false; + + try { + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( document.documentElement, "[test!='']:sizzle" ); + + } catch( pseudoError ) { + pseudoWorks = true; + } + + Sizzle.matchesSelector = function( node, expr ) { + // Make sure that attribute selectors are quoted + expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); + + if ( !Sizzle.isXML( node ) ) { + try { + if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { + var ret = matches.call( node, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || !disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9, so check for that + node.document && node.document.nodeType !== 11 ) { + return ret; + } + } + } catch(e) {} + } + + return Sizzle(expr, null, null, [node]).length > 0; + }; + } +})(); + +(function(){ + var div = document.createElement("div"); + + div.innerHTML = "
"; + + // Opera can't find a second classname (in 9.6) + // Also, make sure that getElementsByClassName actually exists + if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { + return; + } + + // Safari caches class attributes, doesn't catch changes (in 3.2) + div.lastChild.className = "e"; + + if ( div.getElementsByClassName("e").length === 1 ) { + return; + } + + Expr.order.splice(1, 0, "CLASS"); + Expr.find.CLASS = function( match, context, isXML ) { + if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { + return context.getElementsByClassName(match[1]); + } + }; + + // release memory in IE + div = null; +})(); + +function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 && !isXML ){ + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( elem.nodeName.toLowerCase() === cur ) { + match = elem; + break; + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { + for ( var i = 0, l = checkSet.length; i < l; i++ ) { + var elem = checkSet[i]; + + if ( elem ) { + var match = false; + + elem = elem[dir]; + + while ( elem ) { + if ( elem[ expando ] === doneName ) { + match = checkSet[elem.sizset]; + break; + } + + if ( elem.nodeType === 1 ) { + if ( !isXML ) { + elem[ expando ] = doneName; + elem.sizset = i; + } + + if ( typeof cur !== "string" ) { + if ( elem === cur ) { + match = true; + break; + } + + } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { + match = elem; + break; + } + } + + elem = elem[dir]; + } + + checkSet[i] = match; + } + } +} + +if ( document.documentElement.contains ) { + Sizzle.contains = function( a, b ) { + return a !== b && (a.contains ? a.contains(b) : true); + }; + +} else if ( document.documentElement.compareDocumentPosition ) { + Sizzle.contains = function( a, b ) { + return !!(a.compareDocumentPosition(b) & 16); + }; + +} else { + Sizzle.contains = function() { + return false; + }; +} + +Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; + + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +var posProcess = function( selector, context, seed ) { + var match, + tmpSet = [], + later = "", + root = context.nodeType ? [context] : context; + + // Position selectors must be done after the filter + // And so must :not(positional) so we move all PSEUDOs to the end + while ( (match = Expr.match.PSEUDO.exec( selector )) ) { + later += match[0]; + selector = selector.replace( Expr.match.PSEUDO, "" ); + } + + selector = Expr.relative[selector] ? selector + "*" : selector; + + for ( var i = 0, l = root.length; i < l; i++ ) { + Sizzle( selector, root[i], tmpSet, seed ); + } + + return Sizzle.filter( later, tmpSet ); +}; + +// EXPOSE +// Override sizzle attribute retrieval +Sizzle.attr = jQuery.attr; +Sizzle.selectors.attrMap = {}; +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.filters; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})(); + + +var runtil = /Until$/, + rparentsprev = /^(?:parents|prevUntil|prevAll)/, + // Note: This RegExp should be improved, or likely pulled from Sizzle + rmultiselector = /,/, + isSimple = /^.[^:#\[\.,]*$/, + slice = Array.prototype.slice, + POS = jQuery.expr.match.POS, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var self = this, + i, l; + + if ( typeof selector !== "string" ) { + return jQuery( selector ).filter(function() { + for ( i = 0, l = self.length; i < l; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }); + } + + var ret = this.pushStack( "", "find", selector ), + length, n, r; + + for ( i = 0, l = this.length; i < l; i++ ) { + length = ret.length; + jQuery.find( selector, this[i], ret ); + + if ( i > 0 ) { + // Make sure that the results are unique + for ( n = length; n < ret.length; n++ ) { + for ( r = 0; r < length; r++ ) { + if ( ret[r] === ret[n] ) { + ret.splice(n--, 1); + break; + } + } + } + } + } + + return ret; + }, + + has: function( target ) { + var targets = jQuery( target ); + return this.filter(function() { + for ( var i = 0, l = targets.length; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector, false), "not", selector); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector, true), "filter", selector ); + }, + + is: function( selector ) { + return !!selector && ( + typeof selector === "string" ? + // If this is a positional selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + POS.test( selector ) ? + jQuery( selector, this.context ).index( this[0] ) >= 0 : + jQuery.filter( selector, this ).length > 0 : + this.filter( selector ).length > 0 ); + }, + + closest: function( selectors, context ) { + var ret = [], i, l, cur = this[0]; + + // Array (deprecated as of jQuery 1.7) + if ( jQuery.isArray( selectors ) ) { + var level = 1; + + while ( cur && cur.ownerDocument && cur !== context ) { + for ( i = 0; i < selectors.length; i++ ) { + + if ( jQuery( cur ).is( selectors[ i ] ) ) { + ret.push({ selector: selectors[ i ], elem: cur, level: level }); + } + } + + cur = cur.parentNode; + level++; + } + + return ret; + } + + // String + var pos = POS.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( i = 0, l = this.length; i < l; i++ ) { + cur = this[i]; + + while ( cur ) { + if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { + ret.push( cur ); + break; + + } else { + cur = cur.parentNode; + if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { + break; + } + } + } + } + + ret = ret.length > 1 ? jQuery.unique( ret ) : ret; + + return this.pushStack( ret, "closest", selectors ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? + all : + jQuery.unique( all ) ); + }, + + andSelf: function() { + return this.add( this.prevObject ); + } +}); + +// A painfully simple check to see if an element is disconnected +// from a document (should be improved, where feasible). +function isDisconnected( node ) { + return !node || !node.parentNode || node.parentNode.nodeType === 11; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return jQuery.nth( elem, 2, "nextSibling" ); + }, + prev: function( elem ) { + return jQuery.nth( elem, 2, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( elem.parentNode.firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.makeArray( elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( !runtil.test( name ) ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; + + if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + + return this.pushStack( ret, name, slice.call( arguments ).join(",") ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 ? + jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : + jQuery.find.matches(expr, elems); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + nth: function( cur, result, dir, elem ) { + result = result || 1; + var num = 0; + + for ( ; cur; cur = cur[dir] ) { + if ( cur.nodeType === 1 && ++num === result ) { + break; + } + } + + return cur; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, keep ) { + + // Can't pass null or undefined to indexOf in Firefox 4 + // Set to 0 to skip string check + qualifier = qualifier || 0; + + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep(elements, function( elem, i ) { + var retVal = !!qualifier.call( elem, i, elem ); + return retVal === keep; + }); + + } else if ( qualifier.nodeType ) { + return jQuery.grep(elements, function( elem, i ) { + return ( elem === qualifier ) === keep; + }); + + } else if ( typeof qualifier === "string" ) { + var filtered = jQuery.grep(elements, function( elem ) { + return elem.nodeType === 1; + }); + + if ( isSimple.test( qualifier ) ) { + return jQuery.filter(qualifier, filtered, !keep); + } else { + qualifier = jQuery.filter( qualifier, filtered ); + } + } + + return jQuery.grep(elements, function( elem, i ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep; + }); +} + + + + +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, + rtagName = /<([\w:]+)/, + rtbody = /", "" ], + legend: [ 1, "
", "
" ], + thead: [ 1, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + col: [ 2, "", "
" ], + area: [ 1, "", "" ], + _default: [ 0, "", "" ] + }, + safeFragment = createSafeFragment( document ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// IE can't serialize and + + + + + + + + + + + + + + + +
+ + + +
+ + +
+ + + + +
+
+ +

+ + service/previewservice.php + 3 +

+
+ + + + + + + + + + + + + + + + + + + + + +
TypeLineDescription
TODO92Native SVG could be disabled via admin settings
TODO160Get the max size from the settings
TODO40This hard-coded array could be replaced by admin settings
+
+
+
+ +

+ + service/searchmediaservice.php + 1 +

+
+ + + + + + + + + + + +
TypeLineDescription
TODO179We could potentially check if the file is readable ($file->stat() maybe) in order to + only return valid files, but this may slow down operations
+
+
+
+ +

+ + preview/preview.php + 2 +

+
+ + + + + + + + + + + + + + + + +
TypeLineDescription
TODO28On OC8.2, replace \OC\Preview with IPreview
TODO175Need to read scaling setting from settings
+
+
+
+ +

+ + environment/environment.php + 2 +

+
+ + + + + + + + + + + + + + + + +
TypeLineDescription
TODO127Replace with this in 8.2 (https://github.com/owncloud/core/pull/16965)
TODO33remove the serverContainer once OCP\IUserManager has a getUserFolder() method
+
+
+
+ +

+ + service/filesservice.php + 1 +

+
+ + + + + + + + + + + +
TypeLineDescription
TODO190Test to see by how much using file_exists slows things down
+
+
+
+
+
+
+ + + + diff --git a/build/documentation/api/namespaces/OCA.Gallery.AppInfo.html b/build/documentation/api/namespaces/OCA.Gallery.AppInfo.html new file mode 100644 index 00000000..28901ffd --- /dev/null +++ b/build/documentation/api/namespaces/OCA.Gallery.AppInfo.html @@ -0,0 +1,177 @@ + + + + + + » \OCA\Gallery\AppInfo + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + + +
+

Classes, interfaces and traits

+ + +
+

Application

+

Class Application

+
+ +
+ « More »
+ +
+ + +
+
+
+ + + + diff --git a/build/documentation/api/namespaces/OCA.Gallery.Controller.html b/build/documentation/api/namespaces/OCA.Gallery.Controller.html new file mode 100644 index 00000000..f155d3de --- /dev/null +++ b/build/documentation/api/namespaces/OCA.Gallery.Controller.html @@ -0,0 +1,246 @@ + + + + + + » \OCA\Gallery\Controller + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + + +
+

Classes, interfaces and traits

+
+

JsonHttpError

+

Our classes extend both Controller and ApiController, so we need to use +traits to add some common methods

+
+ +
+ « More »
+ +
+

PathManipulation

+

+
+ +
+ « More »
+ + + +
+

ConfigController

+

Class ConfigController

+
+ +
+ « More »
+ +
+

FilesController

+

Class FilesController

+
+ +
+ « More »
+ +
+

PageController

+

Generates templates for the landing page from within ownCloud, the public +gallery and error pages

+
+ +
+ « More »
+ +
+

PreviewController

+

Class PreviewController

+
+ +
+ « More »
+ +
+

PublicConfigController

+

Class PublicConfigController

+
+

Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited

+
+ « More »
+ +
+

PublicFilesController

+

Class PublicFilesController

+
+

Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited

+
+ « More »
+ +
+

PublicPreviewController

+

Class PublicPreviewController

+
+

Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited

+
+ « More »
+ +
+ + +
+
+
+ + + + diff --git a/build/documentation/api/namespaces/OCA.Gallery.Environment.html b/build/documentation/api/namespaces/OCA.Gallery.Environment.html new file mode 100644 index 00000000..a2c7b336 --- /dev/null +++ b/build/documentation/api/namespaces/OCA.Gallery.Environment.html @@ -0,0 +1,193 @@ + + + + + + » \OCA\Gallery\Environment + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + + +
+

Classes, interfaces and traits

+ + +
+

Environment

+

Builds the environment so that the services have access to the files and folders' owner

+
+ +
+ « More »
+ +
+

EnvironmentException

+

Thrown when the service cannot reply to a request

+
+ +
+ « More »
+ +
+

NotFoundEnvException

+

Thrown when the service cannot reply to a request

+
+ +
+ « More »
+ +
+ + +
+
+
+ + + + diff --git a/build/documentation/api/namespaces/OCA.Gallery.Http.html b/build/documentation/api/namespaces/OCA.Gallery.Http.html new file mode 100644 index 00000000..31c0af87 --- /dev/null +++ b/build/documentation/api/namespaces/OCA.Gallery.Http.html @@ -0,0 +1,177 @@ + + + + + + » \OCA\Gallery\Http + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + + +
+

Classes, interfaces and traits

+ + +
+

ImageResponse

+

A renderer for images

+
+ +
+ « More »
+ +
+ + +
+
+
+ + + + diff --git a/build/documentation/api/namespaces/OCA.Gallery.Middleware.html b/build/documentation/api/namespaces/OCA.Gallery.Middleware.html new file mode 100644 index 00000000..0a57a02a --- /dev/null +++ b/build/documentation/api/namespaces/OCA.Gallery.Middleware.html @@ -0,0 +1,203 @@ + + + + + + » \OCA\Gallery\Middleware + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + + +
+

Classes, interfaces and traits

+ + +
+

CheckException

+

Thrown when one of the tests in the "check" middlewares fails

+
+ +
+ « More »
+ +
+

CheckMiddleware

+

Checks that we have a valid token linked to a valid resource and that the +user is authorised to access it

+
+ +
+ « More »
+ +
+

EnvCheckMiddleware

+

Checks that we have a valid token linked to a valid resource and that the +user is authorised to access it

+
+

Once all checks have been passed, the environment is ready to use

+
+ « More »
+ +
+

SharingCheckMiddleware

+

Checks whether the "sharing check" is enabled

+
+ +
+ « More »
+ +
+ + +
+
+
+ + + + diff --git a/build/documentation/api/namespaces/OCA.Gallery.Preview.html b/build/documentation/api/namespaces/OCA.Gallery.Preview.html new file mode 100644 index 00000000..f841f32a --- /dev/null +++ b/build/documentation/api/namespaces/OCA.Gallery.Preview.html @@ -0,0 +1,177 @@ + + + + + + » \OCA\Gallery\Preview + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + + +
+

Classes, interfaces and traits

+ + +
+

Preview

+

Generates previews

+
+ +
+ « More »
+ +
+ + +
+
+
+ + + + diff --git a/build/documentation/api/namespaces/OCA.Gallery.Service.html b/build/documentation/api/namespaces/OCA.Gallery.Service.html new file mode 100644 index 00000000..ffbd7723 --- /dev/null +++ b/build/documentation/api/namespaces/OCA.Gallery.Service.html @@ -0,0 +1,274 @@ + + + + + + » \OCA\Gallery\Service + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + + +
+

Classes, interfaces and traits

+
+

Base64Encode

+

Base64 encoding utility method

+
+ +
+ « More »
+ + + +
+

ConfigParser

+

Parses configuration files

+
+ +
+ « More »
+ +
+

ConfigService

+

Finds configurations files and returns a configuration array

+
+

Checks the current and parent folders for configuration files and the privacy flag +Supports explicit inheritance

+
+ « More »
+ +
+

DownloadService

+

Prepares the file to download

+
+ +
+ « More »
+ +
+

FilesService

+

Contains various methods to retrieve information from the filesystem

+
+ +
+ « More »
+ +
+

ForbiddenServiceException

+

Thrown when the service cannot reply to a request

+
+ +
+ « More »
+ +
+

NotFoundServiceException

+

Thrown when the service cannot reply to a request

+
+ +
+ « More »
+ +
+

PreviewService

+

Generates previews

+
+ +
+ « More »
+ +
+

SearchFolderService

+

Contains various methods to retrieve information from the filesystem

+
+ +
+ « More »
+ +
+

SearchMediaService

+

Searches the instance for media files which can be shown

+
+ +
+ « More »
+ +
+

Service

+

Contains methods which all services will need

+
+ +
+ « More »
+ +
+

ServiceException

+

Thrown when the service cannot reply to a request

+
+ +
+ « More »
+ +
+

ThumbnailService

+

Deals with any thumbnail specific requests

+
+ +
+ « More »
+ +
+ + +
+
+
+ + + + diff --git a/build/documentation/api/namespaces/OCA.Gallery.html b/build/documentation/api/namespaces/OCA.Gallery.html new file mode 100644 index 00000000..849d8add --- /dev/null +++ b/build/documentation/api/namespaces/OCA.Gallery.html @@ -0,0 +1,697 @@ + + + + + + » \OCA\Gallery + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+
+

JsonHttpError

+

Our classes extend both Controller and ApiController, so we need to use +traits to add some common methods

+
+ +
+ « More »
+ +
+

PathManipulation

+

+
+ +
+ « More »
+ + + +
+

ConfigController

+

Class ConfigController

+
+ +
+ « More »
+ +
+

FilesController

+

Class FilesController

+
+ +
+ « More »
+ +
+

PageController

+

Generates templates for the landing page from within ownCloud, the public +gallery and error pages

+
+ +
+ « More »
+ +
+

PreviewController

+

Class PreviewController

+
+ +
+ « More »
+ +
+

PublicConfigController

+

Class PublicConfigController

+
+

Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited

+
+ « More »
+ +
+

PublicFilesController

+

Class PublicFilesController

+
+

Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited

+
+ « More »
+ +
+

PublicPreviewController

+

Class PublicPreviewController

+
+

Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited

+
+ « More »
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+
+

Base64Encode

+

Base64 encoding utility method

+
+ +
+ « More »
+ + + +
+

ConfigParser

+

Parses configuration files

+
+ +
+ « More »
+ +
+

ConfigService

+

Finds configurations files and returns a configuration array

+
+

Checks the current and parent folders for configuration files and the privacy flag +Supports explicit inheritance

+
+ « More »
+ +
+

DownloadService

+

Prepares the file to download

+
+ +
+ « More »
+ +
+

FilesService

+

Contains various methods to retrieve information from the filesystem

+
+ +
+ « More »
+ +
+

ForbiddenServiceException

+

Thrown when the service cannot reply to a request

+
+ +
+ « More »
+ +
+

NotFoundServiceException

+

Thrown when the service cannot reply to a request

+
+ +
+ « More »
+ +
+

PreviewService

+

Generates previews

+
+ +
+ « More »
+ +
+

SearchFolderService

+

Contains various methods to retrieve information from the filesystem

+
+ +
+ « More »
+ +
+

SearchMediaService

+

Searches the instance for media files which can be shown

+
+ +
+ « More »
+ +
+

Service

+

Contains methods which all services will need

+
+ +
+ « More »
+ +
+

ServiceException

+

Thrown when the service cannot reply to a request

+
+ +
+ « More »
+ +
+

ThumbnailService

+

Deals with any thumbnail specific requests

+
+ +
+ « More »
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

Environment

+

Builds the environment so that the services have access to the files and folders' owner

+
+ +
+ « More »
+ +
+

EnvironmentException

+

Thrown when the service cannot reply to a request

+
+ +
+ « More »
+ +
+

NotFoundEnvException

+

Thrown when the service cannot reply to a request

+
+ +
+ « More »
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

ImageResponse

+

A renderer for images

+
+ +
+ « More »
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

CheckException

+

Thrown when one of the tests in the "check" middlewares fails

+
+ +
+ « More »
+ +
+

CheckMiddleware

+

Checks that we have a valid token linked to a valid resource and that the +user is authorised to access it

+
+ +
+ « More »
+ +
+

EnvCheckMiddleware

+

Checks that we have a valid token linked to a valid resource and that the +user is authorised to access it

+
+

Once all checks have been passed, the environment is ready to use

+
+ « More »
+ +
+

SharingCheckMiddleware

+

Checks whether the "sharing check" is enabled

+
+ +
+ « More »
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

Preview

+

Generates previews

+
+ +
+ « More »
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

Application

+

Class Application

+
+ +
+ « More »
+ +
+ + + +
+
+
+ + + + diff --git a/build/documentation/api/namespaces/OCA.html b/build/documentation/api/namespaces/OCA.html new file mode 100644 index 00000000..1326b036 --- /dev/null +++ b/build/documentation/api/namespaces/OCA.html @@ -0,0 +1,709 @@ + + + + + + » \OCA + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + + + + + + +
+

Classes, interfaces and traits

+
+

JsonHttpError

+

Our classes extend both Controller and ApiController, so we need to use +traits to add some common methods

+
+ +
+ « More »
+ +
+

PathManipulation

+

+
+ +
+ « More »
+ + + +
+

ConfigController

+

Class ConfigController

+
+ +
+ « More »
+ +
+

FilesController

+

Class FilesController

+
+ +
+ « More »
+ +
+

PageController

+

Generates templates for the landing page from within ownCloud, the public +gallery and error pages

+
+ +
+ « More »
+ +
+

PreviewController

+

Class PreviewController

+
+ +
+ « More »
+ +
+

PublicConfigController

+

Class PublicConfigController

+
+

Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited

+
+ « More »
+ +
+

PublicFilesController

+

Class PublicFilesController

+
+

Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited

+
+ « More »
+ +
+

PublicPreviewController

+

Class PublicPreviewController

+
+

Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited

+
+ « More »
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+
+

Base64Encode

+

Base64 encoding utility method

+
+ +
+ « More »
+ + + +
+

ConfigParser

+

Parses configuration files

+
+ +
+ « More »
+ +
+

ConfigService

+

Finds configurations files and returns a configuration array

+
+

Checks the current and parent folders for configuration files and the privacy flag +Supports explicit inheritance

+
+ « More »
+ +
+

DownloadService

+

Prepares the file to download

+
+ +
+ « More »
+ +
+

FilesService

+

Contains various methods to retrieve information from the filesystem

+
+ +
+ « More »
+ +
+

ForbiddenServiceException

+

Thrown when the service cannot reply to a request

+
+ +
+ « More »
+ +
+

NotFoundServiceException

+

Thrown when the service cannot reply to a request

+
+ +
+ « More »
+ +
+

PreviewService

+

Generates previews

+
+ +
+ « More »
+ +
+

SearchFolderService

+

Contains various methods to retrieve information from the filesystem

+
+ +
+ « More »
+ +
+

SearchMediaService

+

Searches the instance for media files which can be shown

+
+ +
+ « More »
+ +
+

Service

+

Contains methods which all services will need

+
+ +
+ « More »
+ +
+

ServiceException

+

Thrown when the service cannot reply to a request

+
+ +
+ « More »
+ +
+

ThumbnailService

+

Deals with any thumbnail specific requests

+
+ +
+ « More »
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

Environment

+

Builds the environment so that the services have access to the files and folders' owner

+
+ +
+ « More »
+ +
+

EnvironmentException

+

Thrown when the service cannot reply to a request

+
+ +
+ « More »
+ +
+

NotFoundEnvException

+

Thrown when the service cannot reply to a request

+
+ +
+ « More »
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

ImageResponse

+

A renderer for images

+
+ +
+ « More »
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

CheckException

+

Thrown when one of the tests in the "check" middlewares fails

+
+ +
+ « More »
+ +
+

CheckMiddleware

+

Checks that we have a valid token linked to a valid resource and that the +user is authorised to access it

+
+ +
+ « More »
+ +
+

EnvCheckMiddleware

+

Checks that we have a valid token linked to a valid resource and that the +user is authorised to access it

+
+

Once all checks have been passed, the environment is ready to use

+
+ « More »
+ +
+

SharingCheckMiddleware

+

Checks whether the "sharing check" is enabled

+
+ +
+ « More »
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

Preview

+

Generates previews

+
+ +
+ « More »
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

Application

+

Class Application

+
+ +
+ « More »
+ +
+ + + + +
+
+
+ + + + diff --git a/build/documentation/api/namespaces/default.html b/build/documentation/api/namespaces/default.html new file mode 100644 index 00000000..8e07a022 --- /dev/null +++ b/build/documentation/api/namespaces/default.html @@ -0,0 +1,721 @@ + + + + + + » \ + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + + + + + + + + +
+

Classes, interfaces and traits

+
+

JsonHttpError

+

Our classes extend both Controller and ApiController, so we need to use +traits to add some common methods

+
+ +
+ « More »
+ +
+

PathManipulation

+

+
+ +
+ « More »
+ + + +
+

ConfigController

+

Class ConfigController

+
+ +
+ « More »
+ +
+

FilesController

+

Class FilesController

+
+ +
+ « More »
+ +
+

PageController

+

Generates templates for the landing page from within ownCloud, the public +gallery and error pages

+
+ +
+ « More »
+ +
+

PreviewController

+

Class PreviewController

+
+ +
+ « More »
+ +
+

PublicConfigController

+

Class PublicConfigController

+
+

Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited

+
+ « More »
+ +
+

PublicFilesController

+

Class PublicFilesController

+
+

Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited

+
+ « More »
+ +
+

PublicPreviewController

+

Class PublicPreviewController

+
+

Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited

+
+ « More »
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+
+

Base64Encode

+

Base64 encoding utility method

+
+ +
+ « More »
+ + + +
+

ConfigParser

+

Parses configuration files

+
+ +
+ « More »
+ +
+

ConfigService

+

Finds configurations files and returns a configuration array

+
+

Checks the current and parent folders for configuration files and the privacy flag +Supports explicit inheritance

+
+ « More »
+ +
+

DownloadService

+

Prepares the file to download

+
+ +
+ « More »
+ +
+

FilesService

+

Contains various methods to retrieve information from the filesystem

+
+ +
+ « More »
+ +
+

ForbiddenServiceException

+

Thrown when the service cannot reply to a request

+
+ +
+ « More »
+ +
+

NotFoundServiceException

+

Thrown when the service cannot reply to a request

+
+ +
+ « More »
+ +
+

PreviewService

+

Generates previews

+
+ +
+ « More »
+ +
+

SearchFolderService

+

Contains various methods to retrieve information from the filesystem

+
+ +
+ « More »
+ +
+

SearchMediaService

+

Searches the instance for media files which can be shown

+
+ +
+ « More »
+ +
+

Service

+

Contains methods which all services will need

+
+ +
+ « More »
+ +
+

ServiceException

+

Thrown when the service cannot reply to a request

+
+ +
+ « More »
+ +
+

ThumbnailService

+

Deals with any thumbnail specific requests

+
+ +
+ « More »
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

Environment

+

Builds the environment so that the services have access to the files and folders' owner

+
+ +
+ « More »
+ +
+

EnvironmentException

+

Thrown when the service cannot reply to a request

+
+ +
+ « More »
+ +
+

NotFoundEnvException

+

Thrown when the service cannot reply to a request

+
+ +
+ « More »
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

ImageResponse

+

A renderer for images

+
+ +
+ « More »
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

CheckException

+

Thrown when one of the tests in the "check" middlewares fails

+
+ +
+ « More »
+ +
+

CheckMiddleware

+

Checks that we have a valid token linked to a valid resource and that the +user is authorised to access it

+
+ +
+ « More »
+ +
+

EnvCheckMiddleware

+

Checks that we have a valid token linked to a valid resource and that the +user is authorised to access it

+
+

Once all checks have been passed, the environment is ready to use

+
+ « More »
+ +
+

SharingCheckMiddleware

+

Checks whether the "sharing check" is enabled

+
+ +
+ « More »
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

Preview

+

Generates previews

+
+ +
+ « More »
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

Application

+

Class Application

+
+ +
+ « More »
+ +
+ + + + + +
+
+
+ + + + diff --git a/build/documentation/api/packages/Default.html b/build/documentation/api/packages/Default.html new file mode 100644 index 00000000..4faeda81 --- /dev/null +++ b/build/documentation/api/packages/Default.html @@ -0,0 +1,797 @@ + + + + + + » + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

EnvironmentException

+

Thrown when the service cannot reply to a request

+
+ « More » +
+ +
+

ForbiddenServiceException

+

Thrown when the service cannot reply to a request

+
+ « More » +
+ +
+

NotFoundEnvException

+

Thrown when the service cannot reply to a request

+
+ « More » +
+ +
+

NotFoundServiceException

+

Thrown when the service cannot reply to a request

+
+ « More » +
+ +
+

ServiceException

+

Thrown when the service cannot reply to a request

+
+ « More » +
+ +
+ + + + + + + + + + + + + + + + +
+

Classes, interfaces and traits

+
+

JsonHttpError

+

Our classes extend both Controller and ApiController, so we need to use +traits to add some common methods

+
+ « More » +
+ +
+

PathManipulation

+

+
+ « More » +
+ + + +
+

ConfigController

+

Class ConfigController

+
+ « More » +
+ +
+

FilesController

+

Class FilesController

+
+ « More » +
+ +
+

PageController

+

Generates templates for the landing page from within ownCloud, the public +gallery and error pages

+
+ « More » +
+ +
+

PreviewController

+

Class PreviewController

+
+ « More » +
+ +
+

PublicConfigController

+

Class PublicConfigController

+
Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited
+ « More » +
+ +
+

PublicFilesController

+

Class PublicFilesController

+
Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited
+ « More » +
+ +
+

PublicPreviewController

+

Class PublicPreviewController

+
Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited
+ « More » +
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+
+

Base64Encode

+

Base64 encoding utility method

+
+ « More » +
+ + + +
+

ConfigParser

+

Parses configuration files

+
+ « More » +
+ +
+

ConfigService

+

Finds configurations files and returns a configuration array

+
Checks the current and parent folders for configuration files and the privacy flag +Supports explicit inheritance
+ « More » +
+ +
+

DownloadService

+

Prepares the file to download

+
+ « More » +
+ +
+

FilesService

+

Contains various methods to retrieve information from the filesystem

+
+ « More » +
+ +
+

PreviewService

+

Generates previews

+
+ « More » +
+ +
+

SearchFolderService

+

Contains various methods to retrieve information from the filesystem

+
+ « More » +
+ +
+

SearchMediaService

+

Searches the instance for media files which can be shown

+
+ « More » +
+ +
+

Service

+

Contains methods which all services will need

+
+ « More » +
+ +
+

ThumbnailService

+

Deals with any thumbnail specific requests

+
+ « More » +
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

ImageResponse

+

A renderer for images

+
+ « More » +
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

SharingCheckMiddleware

+

Checks whether the "sharing check" is enabled

+
+ « More » +
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

CheckException

+

Thrown when one of the tests in the "check" middlewares fails

+
+ « More » +
+ +
+

CheckMiddleware

+

Checks that we have a valid token linked to a valid resource and that the +user is authorised to access it

+
+ « More » +
+ +
+

EnvCheckMiddleware

+

Checks that we have a valid token linked to a valid resource and that the +user is authorised to access it

+
Once all checks have been passed, the environment is ready to use
+ « More » +
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

Preview

+

Generates previews

+
+ « More » +
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

Environment

+

Builds the environment so that the services have access to the files and folders' owner

+
+ « More » +
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

Application

+

Class Application

+
+ « More » +
+ +
+ + + + + +
+
+
+ + + + diff --git a/build/documentation/api/packages/OCA.Gallery.AppInfo.html b/build/documentation/api/packages/OCA.Gallery.AppInfo.html new file mode 100644 index 00000000..62b7aaa1 --- /dev/null +++ b/build/documentation/api/packages/OCA.Gallery.AppInfo.html @@ -0,0 +1,176 @@ + + + + + + » \OCA\Gallery\AppInfo + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + + +
+

Classes, interfaces and traits

+ + +
+

Application

+

Class Application

+
+ « More » +
+ +
+ + +
+
+
+ + + + diff --git a/build/documentation/api/packages/OCA.Gallery.Controller.html b/build/documentation/api/packages/OCA.Gallery.Controller.html new file mode 100644 index 00000000..0a668f6b --- /dev/null +++ b/build/documentation/api/packages/OCA.Gallery.Controller.html @@ -0,0 +1,237 @@ + + + + + + » \OCA\Gallery\Controller + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + + +
+

Classes, interfaces and traits

+
+

JsonHttpError

+

Our classes extend both Controller and ApiController, so we need to use +traits to add some common methods

+
+ « More » +
+ +
+

PathManipulation

+

+
+ « More » +
+ + + +
+

ConfigController

+

Class ConfigController

+
+ « More » +
+ +
+

FilesController

+

Class FilesController

+
+ « More » +
+ +
+

PageController

+

Generates templates for the landing page from within ownCloud, the public +gallery and error pages

+
+ « More » +
+ +
+

PreviewController

+

Class PreviewController

+
+ « More » +
+ +
+

PublicConfigController

+

Class PublicConfigController

+
Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited
+ « More » +
+ +
+

PublicFilesController

+

Class PublicFilesController

+
Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited
+ « More » +
+ +
+

PublicPreviewController

+

Class PublicPreviewController

+
Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited
+ « More » +
+ +
+ + +
+
+
+ + + + diff --git a/build/documentation/api/packages/OCA.Gallery.Environment.html b/build/documentation/api/packages/OCA.Gallery.Environment.html new file mode 100644 index 00000000..c26f4696 --- /dev/null +++ b/build/documentation/api/packages/OCA.Gallery.Environment.html @@ -0,0 +1,176 @@ + + + + + + » \OCA\Gallery\Environment + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + + +
+

Classes, interfaces and traits

+ + +
+

Environment

+

Builds the environment so that the services have access to the files and folders' owner

+
+ « More » +
+ +
+ + +
+
+
+ + + + diff --git a/build/documentation/api/packages/OCA.Gallery.Http.html b/build/documentation/api/packages/OCA.Gallery.Http.html new file mode 100644 index 00000000..982193ef --- /dev/null +++ b/build/documentation/api/packages/OCA.Gallery.Http.html @@ -0,0 +1,176 @@ + + + + + + » \OCA\Gallery\Http + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + + +
+

Classes, interfaces and traits

+ + +
+

ImageResponse

+

A renderer for images

+
+ « More » +
+ +
+ + +
+
+
+ + + + diff --git a/build/documentation/api/packages/OCA.Gallery.Middleware.html b/build/documentation/api/packages/OCA.Gallery.Middleware.html new file mode 100644 index 00000000..1db53acb --- /dev/null +++ b/build/documentation/api/packages/OCA.Gallery.Middleware.html @@ -0,0 +1,192 @@ + + + + + + » \OCA\Gallery\Middleware + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + + +
+

Classes, interfaces and traits

+ + +
+

CheckException

+

Thrown when one of the tests in the "check" middlewares fails

+
+ « More » +
+ +
+

CheckMiddleware

+

Checks that we have a valid token linked to a valid resource and that the +user is authorised to access it

+
+ « More » +
+ +
+

EnvCheckMiddleware

+

Checks that we have a valid token linked to a valid resource and that the +user is authorised to access it

+
Once all checks have been passed, the environment is ready to use
+ « More » +
+ +
+ + +
+
+
+ + + + diff --git a/build/documentation/api/packages/OCA.Gallery.Preview.html b/build/documentation/api/packages/OCA.Gallery.Preview.html new file mode 100644 index 00000000..d330d760 --- /dev/null +++ b/build/documentation/api/packages/OCA.Gallery.Preview.html @@ -0,0 +1,176 @@ + + + + + + » \OCA\Gallery\Preview + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + + +
+

Classes, interfaces and traits

+ + +
+

Preview

+

Generates previews

+
+ « More » +
+ +
+ + +
+
+
+ + + + diff --git a/build/documentation/api/packages/OCA.Gallery.Service.html b/build/documentation/api/packages/OCA.Gallery.Service.html new file mode 100644 index 00000000..67815c0a --- /dev/null +++ b/build/documentation/api/packages/OCA.Gallery.Service.html @@ -0,0 +1,240 @@ + + + + + + » \OCA\Gallery\Service + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + + +
+

Classes, interfaces and traits

+
+

Base64Encode

+

Base64 encoding utility method

+
+ « More » +
+ + + +
+

ConfigParser

+

Parses configuration files

+
+ « More » +
+ +
+

ConfigService

+

Finds configurations files and returns a configuration array

+
Checks the current and parent folders for configuration files and the privacy flag +Supports explicit inheritance
+ « More » +
+ +
+

DownloadService

+

Prepares the file to download

+
+ « More » +
+ +
+

FilesService

+

Contains various methods to retrieve information from the filesystem

+
+ « More » +
+ +
+

PreviewService

+

Generates previews

+
+ « More » +
+ +
+

SearchFolderService

+

Contains various methods to retrieve information from the filesystem

+
+ « More » +
+ +
+

SearchMediaService

+

Searches the instance for media files which can be shown

+
+ « More » +
+ +
+

Service

+

Contains methods which all services will need

+
+ « More » +
+ +
+

ThumbnailService

+

Deals with any thumbnail specific requests

+
+ « More » +
+ +
+ + +
+
+
+ + + + diff --git a/build/documentation/api/packages/OCA.Gallery.SharingCheckMiddleware.html b/build/documentation/api/packages/OCA.Gallery.SharingCheckMiddleware.html new file mode 100644 index 00000000..030e050f --- /dev/null +++ b/build/documentation/api/packages/OCA.Gallery.SharingCheckMiddleware.html @@ -0,0 +1,176 @@ + + + + + + » \OCA\Gallery\SharingCheckMiddleware + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + + +
+

Classes, interfaces and traits

+ + +
+

SharingCheckMiddleware

+

Checks whether the "sharing check" is enabled

+
+ « More » +
+ +
+ + +
+
+
+ + + + diff --git a/build/documentation/api/packages/OCA.Gallery.html b/build/documentation/api/packages/OCA.Gallery.html new file mode 100644 index 00000000..bd9842a0 --- /dev/null +++ b/build/documentation/api/packages/OCA.Gallery.html @@ -0,0 +1,688 @@ + + + + + + » \OCA\Gallery + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + + + + + + +
+

Classes, interfaces and traits

+
+

JsonHttpError

+

Our classes extend both Controller and ApiController, so we need to use +traits to add some common methods

+
+ « More » +
+ +
+

PathManipulation

+

+
+ « More » +
+ + + +
+

ConfigController

+

Class ConfigController

+
+ « More » +
+ +
+

FilesController

+

Class FilesController

+
+ « More » +
+ +
+

PageController

+

Generates templates for the landing page from within ownCloud, the public +gallery and error pages

+
+ « More » +
+ +
+

PreviewController

+

Class PreviewController

+
+ « More » +
+ +
+

PublicConfigController

+

Class PublicConfigController

+
Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited
+ « More » +
+ +
+

PublicFilesController

+

Class PublicFilesController

+
Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited
+ « More » +
+ +
+

PublicPreviewController

+

Class PublicPreviewController

+
Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited
+ « More » +
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+
+

Base64Encode

+

Base64 encoding utility method

+
+ « More » +
+ + + +
+

ConfigParser

+

Parses configuration files

+
+ « More » +
+ +
+

ConfigService

+

Finds configurations files and returns a configuration array

+
Checks the current and parent folders for configuration files and the privacy flag +Supports explicit inheritance
+ « More » +
+ +
+

DownloadService

+

Prepares the file to download

+
+ « More » +
+ +
+

FilesService

+

Contains various methods to retrieve information from the filesystem

+
+ « More » +
+ +
+

PreviewService

+

Generates previews

+
+ « More » +
+ +
+

SearchFolderService

+

Contains various methods to retrieve information from the filesystem

+
+ « More » +
+ +
+

SearchMediaService

+

Searches the instance for media files which can be shown

+
+ « More » +
+ +
+

Service

+

Contains methods which all services will need

+
+ « More » +
+ +
+

ThumbnailService

+

Deals with any thumbnail specific requests

+
+ « More » +
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

ImageResponse

+

A renderer for images

+
+ « More » +
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

SharingCheckMiddleware

+

Checks whether the "sharing check" is enabled

+
+ « More » +
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

CheckException

+

Thrown when one of the tests in the "check" middlewares fails

+
+ « More » +
+ +
+

CheckMiddleware

+

Checks that we have a valid token linked to a valid resource and that the +user is authorised to access it

+
+ « More » +
+ +
+

EnvCheckMiddleware

+

Checks that we have a valid token linked to a valid resource and that the +user is authorised to access it

+
Once all checks have been passed, the environment is ready to use
+ « More » +
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

Preview

+

Generates previews

+
+ « More » +
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

Environment

+

Builds the environment so that the services have access to the files and folders' owner

+
+ « More » +
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

Application

+

Class Application

+
+ « More » +
+ +
+ + + +
+
+
+ + + + diff --git a/build/documentation/api/packages/OCA.html b/build/documentation/api/packages/OCA.html new file mode 100644 index 00000000..0aaa7f0b --- /dev/null +++ b/build/documentation/api/packages/OCA.html @@ -0,0 +1,710 @@ + + + + + + » \OCA + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + +
+

Classes, interfaces and traits

+
+

JsonHttpError

+

Our classes extend both Controller and ApiController, so we need to use +traits to add some common methods

+
+ « More » +
+ +
+

PathManipulation

+

+
+ « More » +
+ + + +
+

ConfigController

+

Class ConfigController

+
+ « More » +
+ +
+

FilesController

+

Class FilesController

+
+ « More » +
+ +
+

PageController

+

Generates templates for the landing page from within ownCloud, the public +gallery and error pages

+
+ « More » +
+ +
+

PreviewController

+

Class PreviewController

+
+ « More » +
+ +
+

PublicConfigController

+

Class PublicConfigController

+
Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited
+ « More » +
+ +
+

PublicFilesController

+

Class PublicFilesController

+
Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited
+ « More » +
+ +
+

PublicPreviewController

+

Class PublicPreviewController

+
Note: Type casting only works if the "@param" parameters are also included in this class as +their not yet inherited
+ « More » +
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+
+

Base64Encode

+

Base64 encoding utility method

+
+ « More » +
+ + + +
+

ConfigParser

+

Parses configuration files

+
+ « More » +
+ +
+

ConfigService

+

Finds configurations files and returns a configuration array

+
Checks the current and parent folders for configuration files and the privacy flag +Supports explicit inheritance
+ « More » +
+ +
+

DownloadService

+

Prepares the file to download

+
+ « More » +
+ +
+

FilesService

+

Contains various methods to retrieve information from the filesystem

+
+ « More » +
+ +
+

PreviewService

+

Generates previews

+
+ « More » +
+ +
+

SearchFolderService

+

Contains various methods to retrieve information from the filesystem

+
+ « More » +
+ +
+

SearchMediaService

+

Searches the instance for media files which can be shown

+
+ « More » +
+ +
+

Service

+

Contains methods which all services will need

+
+ « More » +
+ +
+

ThumbnailService

+

Deals with any thumbnail specific requests

+
+ « More » +
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

ImageResponse

+

A renderer for images

+
+ « More » +
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

SharingCheckMiddleware

+

Checks whether the "sharing check" is enabled

+
+ « More » +
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

CheckException

+

Thrown when one of the tests in the "check" middlewares fails

+
+ « More » +
+ +
+

CheckMiddleware

+

Checks that we have a valid token linked to a valid resource and that the +user is authorised to access it

+
+ « More » +
+ +
+

EnvCheckMiddleware

+

Checks that we have a valid token linked to a valid resource and that the +user is authorised to access it

+
Once all checks have been passed, the environment is ready to use
+ « More » +
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

Preview

+

Generates previews

+
+ « More » +
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

Environment

+

Builds the environment so that the services have access to the files and folders' owner

+
+ « More » +
+ +
+ + + + + + + + +
+

Classes, interfaces and traits

+ + +
+

Application

+

Class Application

+
+ « More » +
+ +
+ + + + +
+
+
+ + + + diff --git a/build/documentation/docpublisher.sh b/build/documentation/docpublisher.sh new file mode 100644 index 00000000..1e3e97e2 --- /dev/null +++ b/build/documentation/docpublisher.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +# +# https://gist.github.com/domenic/ec8b0fc8ab45f39403dd +# + +# Exit with nonzero exit code if anything fails +set -e + +# Move the code coverage report to a local folder +mv ../../tests/_output/coverage/* reports/code\ coverage + +# Create a *new* Git repo +git init + +# Inside this git repo we'll pretend to be a new user +git config user.name "Travis CI" +git config user.email "travis-gallery-reporter@interfasys.ch" + +# The first and only commit to this new Git repo contains all the +# files present with the commit message "Deploy to GitHub Pages". +git add . + +# Initialising wiki submodule +git submodule add https://github.com/owncloud/gallery.wiki.git wiki + +git commit -m "Gallery documentation" + +# Force push from the current repo's master branch to the remote +# repo's gh-pages branch. (All previous history on the gh-pages branch +# will be lost, since we are overwriting it.) We redirect any output to +# /dev/null to hide any sensitive credential data that might otherwise be exposed. +git push --force --quiet "https://${GH_TOKEN}@${GH_REF}" master:gh-pages > /dev/null 2>&1 diff --git a/build/documentation/index.html b/build/documentation/index.html new file mode 100644 index 00000000..ea338ce0 --- /dev/null +++ b/build/documentation/index.html @@ -0,0 +1,18 @@ + + + + + Developer documentation for ownCloud Gallery + + + +

Developer documentation for ownCloud Gallery

+ + + +Developer documentation is available in the Wiki + + diff --git a/build/documentation/reports/code coverage/index.html b/build/documentation/reports/code coverage/index.html new file mode 100644 index 00000000..e69de29b diff --git a/build/documentation/reports/index.html b/build/documentation/reports/index.html new file mode 100644 index 00000000..e69de29b diff --git a/codeception.yml b/codeception.yml index 2ea91f6a..6c6c2b0f 100644 --- a/codeception.yml +++ b/codeception.yml @@ -30,6 +30,7 @@ coverage: - preview/* - service/* exclude: + - build/* - css/* - documentation/* - img/* diff --git a/composer.json b/composer.json index d69c3575..9b11d3e7 100644 --- a/composer.json +++ b/composer.json @@ -28,6 +28,7 @@ }, "require-dev": { "codeception/codeception": "2.1.*", - "codeception/phpbuiltinserver": "*" + "codeception/phpbuiltinserver": "*", + "phpdocumentor/phpdocumentor": "^2.8" } } diff --git a/composer.lock b/composer.lock index 1712b41f..2ab3de40 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "5f3a21b583d859e4ea3af1e2d9e0ed17", + "hash": "4dfbc67c906d89ec69a7059c49dd3a3e", "packages": [ { "name": "symfony/yaml", @@ -57,6 +57,124 @@ } ], "packages-dev": [ + { + "name": "cilex/cilex", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/Cilex/Cilex.git", + "reference": "7acd965a609a56d0345e8b6071c261fbdb926cb5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Cilex/Cilex/zipball/7acd965a609a56d0345e8b6071c261fbdb926cb5", + "reference": "7acd965a609a56d0345e8b6071c261fbdb926cb5", + "shasum": "" + }, + "require": { + "cilex/console-service-provider": "1.*", + "php": ">=5.3.3", + "pimple/pimple": "~1.0", + "symfony/finder": "~2.1", + "symfony/process": "~2.1" + }, + "require-dev": { + "phpunit/phpunit": "3.7.*", + "symfony/validator": "~2.1" + }, + "suggest": { + "monolog/monolog": ">=1.0.0", + "symfony/validator": ">=1.0.0", + "symfony/yaml": ">=1.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-0": { + "Cilex": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "description": "The PHP micro-framework for Command line tools based on the Symfony2 Components", + "homepage": "http://cilex.github.com", + "keywords": [ + "cli", + "microframework" + ], + "time": "2014-03-29 14:03:13" + }, + { + "name": "cilex/console-service-provider", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/Cilex/console-service-provider.git", + "reference": "25ee3d1875243d38e1a3448ff94bdf944f70d24e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Cilex/console-service-provider/zipball/25ee3d1875243d38e1a3448ff94bdf944f70d24e", + "reference": "25ee3d1875243d38e1a3448ff94bdf944f70d24e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "pimple/pimple": "1.*@dev", + "symfony/console": "~2.1" + }, + "require-dev": { + "cilex/cilex": "1.*@dev", + "silex/silex": "1.*@dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-0": { + "Cilex\\Provider\\Console": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "description": "Console Service Provider", + "keywords": [ + "cilex", + "console", + "pimple", + "service-provider", + "silex" + ], + "time": "2012-12-19 10:50:58" + }, { "name": "codeception/codeception", "version": "2.1.2", @@ -177,6 +295,74 @@ ], "time": "2014-09-19 10:14:07" }, + { + "name": "doctrine/annotations", + "version": "v1.2.6", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "f4a91702ca3cd2e568c3736aa031ed00c3752af4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/f4a91702ca3cd2e568c3736aa031ed00c3752af4", + "reference": "f4a91702ca3cd2e568c3736aa031ed00c3752af4", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "php": ">=5.3.2" + }, + "require-dev": { + "doctrine/cache": "1.*", + "phpunit/phpunit": "4.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Annotations\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "time": "2015-06-17 12:21:22" + }, { "name": "doctrine/instantiator", "version": "1.0.5", @@ -232,17 +418,110 @@ "time": "2015-06-14 21:17:01" }, { - "name": "facebook/webdriver", - "version": "1.0.1", + "name": "doctrine/lexer", + "version": "v1.0.1", "source": { "type": "git", - "url": "https://github.com/facebook/php-webdriver.git", - "reference": "8eb1952d6be0725e1064c4fe0630d0d4d1de7639" + "url": "https://github.com/doctrine/lexer.git", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/8eb1952d6be0725e1064c4fe0630d0d4d1de7639", - "reference": "8eb1952d6be0725e1064c4fe0630d0d4d1de7639", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Doctrine\\Common\\Lexer\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "lexer", + "parser" + ], + "time": "2014-09-09 13:34:57" + }, + { + "name": "erusev/parsedown", + "version": "1.5.4", + "source": { + "type": "git", + "url": "https://github.com/erusev/parsedown.git", + "reference": "0e89e3714bda18973184d30646306bb0a482bd96" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/0e89e3714bda18973184d30646306bb0a482bd96", + "reference": "0e89e3714bda18973184d30646306bb0a482bd96", + "shasum": "" + }, + "type": "library", + "autoload": { + "psr-0": { + "Parsedown": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Emanuil Rusev", + "email": "hello@erusev.com", + "homepage": "http://erusev.com" + } + ], + "description": "Parser for Markdown.", + "homepage": "http://parsedown.org", + "keywords": [ + "markdown", + "parser" + ], + "time": "2015-08-03 09:24:05" + }, + { + "name": "facebook/webdriver", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/facebook/php-webdriver.git", + "reference": "fe1bbbc5dde804d08a8593f1d9d0d3b05f5c84f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/fe1bbbc5dde804d08a8593f1d9d0d3b05f5c84f5", + "reference": "fe1bbbc5dde804d08a8593f1d9d0d3b05f5c84f5", "shasum": "" }, "require": { @@ -272,7 +551,7 @@ "selenium", "webdriver" ], - "time": "2015-07-16 19:31:12" + "time": "2015-08-12 20:21:31" }, { "name": "guzzlehttp/guzzle", @@ -491,6 +770,786 @@ ], "time": "2014-10-12 19:18:40" }, + { + "name": "herrera-io/json", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/kherge-abandoned/php-json.git", + "reference": "60c696c9370a1e5136816ca557c17f82a6fa83f1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kherge-abandoned/php-json/zipball/60c696c9370a1e5136816ca557c17f82a6fa83f1", + "reference": "60c696c9370a1e5136816ca557c17f82a6fa83f1", + "shasum": "" + }, + "require": { + "ext-json": "*", + "justinrainbow/json-schema": ">=1.0,<2.0-dev", + "php": ">=5.3.3", + "seld/jsonlint": ">=1.0,<2.0-dev" + }, + "require-dev": { + "herrera-io/phpunit-test-case": "1.*", + "mikey179/vfsstream": "1.1.0", + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "files": [ + "src/lib/json_version.php" + ], + "psr-0": { + "Herrera\\Json": "src/lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kevin Herrera", + "email": "kevin@herrera.io", + "homepage": "http://kevin.herrera.io" + } + ], + "description": "A library for simplifying JSON linting and validation.", + "homepage": "http://herrera-io.github.com/php-json", + "keywords": [ + "json", + "lint", + "schema", + "validate" + ], + "time": "2013-10-30 16:51:34" + }, + { + "name": "herrera-io/phar-update", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/kherge-abandoned/php-phar-update.git", + "reference": "00a79e1d5b8cf3c080a2e3becf1ddf7a7fea025b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kherge-abandoned/php-phar-update/zipball/00a79e1d5b8cf3c080a2e3becf1ddf7a7fea025b", + "reference": "00a79e1d5b8cf3c080a2e3becf1ddf7a7fea025b", + "shasum": "" + }, + "require": { + "herrera-io/json": "1.*", + "kherge/version": "1.*", + "php": ">=5.3.3" + }, + "require-dev": { + "herrera-io/phpunit-test-case": "1.*", + "mikey179/vfsstream": "1.1.0", + "phpunit/phpunit": "3.7.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "files": [ + "src/lib/constants.php" + ], + "psr-0": { + "Herrera\\Phar\\Update": "src/lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kevin Herrera", + "email": "kevin@herrera.io", + "homepage": "http://kevin.herrera.io" + } + ], + "description": "A library for self-updating Phars.", + "homepage": "http://herrera-io.github.com/php-phar-update", + "keywords": [ + "phar", + "update" + ], + "time": "2013-10-30 17:23:01" + }, + { + "name": "jms/metadata", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/metadata.git", + "reference": "22b72455559a25777cfd28c4ffda81ff7639f353" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/22b72455559a25777cfd28c4ffda81ff7639f353", + "reference": "22b72455559a25777cfd28c4ffda81ff7639f353", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "doctrine/cache": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5.x-dev" + } + }, + "autoload": { + "psr-0": { + "Metadata\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache" + ], + "authors": [ + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh", + "role": "Developer of wrapped JMSSerializerBundle" + } + ], + "description": "Class/method/property metadata management in PHP", + "keywords": [ + "annotations", + "metadata", + "xml", + "yaml" + ], + "time": "2014-07-12 07:13:19" + }, + { + "name": "jms/parser-lib", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/parser-lib.git", + "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/parser-lib/zipball/c509473bc1b4866415627af0e1c6cc8ac97fa51d", + "reference": "c509473bc1b4866415627af0e1c6cc8ac97fa51d", + "shasum": "" + }, + "require": { + "phpoption/phpoption": ">=0.9,<2.0-dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-0": { + "JMS\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "description": "A library for easily creating recursive-descent parsers.", + "time": "2012-11-18 18:08:43" + }, + { + "name": "jms/serializer", + "version": "0.16.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/serializer.git", + "reference": "c8a171357ca92b6706e395c757f334902d430ea9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/c8a171357ca92b6706e395c757f334902d430ea9", + "reference": "c8a171357ca92b6706e395c757f334902d430ea9", + "shasum": "" + }, + "require": { + "doctrine/annotations": "1.*", + "jms/metadata": "~1.1", + "jms/parser-lib": "1.*", + "php": ">=5.3.2", + "phpcollection/phpcollection": "~0.1" + }, + "require-dev": { + "doctrine/orm": "~2.1", + "doctrine/phpcr-odm": "~1.0.1", + "jackalope/jackalope-doctrine-dbal": "1.0.*", + "propel/propel1": "~1.7", + "symfony/filesystem": "2.*", + "symfony/form": "~2.1", + "symfony/translation": "~2.0", + "symfony/validator": "~2.0", + "symfony/yaml": "2.*", + "twig/twig": ">=1.8,<2.0-dev" + }, + "suggest": { + "symfony/yaml": "Required if you'd like to serialize data to YAML format." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.15-dev" + } + }, + "autoload": { + "psr-0": { + "JMS\\Serializer": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh", + "role": "Developer of wrapped JMSSerializerBundle" + } + ], + "description": "Library for (de-)serializing data of any complexity; supports XML, JSON, and YAML.", + "homepage": "http://jmsyst.com/libs/serializer", + "keywords": [ + "deserialization", + "jaxb", + "json", + "serialization", + "xml" + ], + "time": "2014-03-18 08:39:00" + }, + { + "name": "justinrainbow/json-schema", + "version": "1.4.4", + "source": { + "type": "git", + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "8dc9b9d85ab639ca60ab4608b34c1279d6ae7bce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/8dc9b9d85ab639ca60ab4608b34c1279d6ae7bce", + "reference": "8dc9b9d85ab639ca60ab4608b34c1279d6ae7bce", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "json-schema/json-schema-test-suite": "1.1.0", + "phpdocumentor/phpdocumentor": "~2", + "phpunit/phpunit": "~3.7" + }, + "bin": [ + "bin/validate-json" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "JsonSchema": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" + }, + { + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com" + } + ], + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", + "keywords": [ + "json", + "schema" + ], + "time": "2015-07-14 16:29:50" + }, + { + "name": "kherge/version", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/kherge-abandoned/Version.git", + "reference": "f07cf83f8ce533be8f93d2893d96d674bbeb7e30" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kherge-abandoned/Version/zipball/f07cf83f8ce533be8f93d2893d96d674bbeb7e30", + "reference": "f07cf83f8ce533be8f93d2893d96d674bbeb7e30", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-0": { + "KevinGH\\Version": "src/lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kevin Herrera", + "email": "me@kevingh.com" + } + ], + "description": "A parsing and comparison library for semantic versioning.", + "homepage": "http://github.com/kherge/Version", + "time": "2012-08-16 17:13:03" + }, + { + "name": "monolog/monolog", + "version": "1.16.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "c0c0b4bee3aabce7182876b0d912ef2595563db7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c0c0b4bee3aabce7182876b0d912ef2595563db7", + "reference": "c0c0b4bee3aabce7182876b0d912ef2595563db7", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "raven/raven": "~0.8", + "ruflin/elastica": ">=0.90 <3.0", + "swiftmailer/swiftmailer": "~5.3", + "videlalvaro/php-amqplib": "~2.4" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "raven/raven": "Allow sending log messages to a Sentry server", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.16.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "time": "2015-08-09 17:44:44" + }, + { + "name": "nikic/php-parser", + "version": "v0.9.5", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "ef70767475434bdb3615b43c327e2cae17ef12eb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ef70767475434bdb3615b43c327e2cae17ef12eb", + "reference": "ef70767475434bdb3615b43c327e2cae17ef12eb", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.9-dev" + } + }, + "autoload": { + "psr-0": { + "PHPParser": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "time": "2014-07-23 18:24:17" + }, + { + "name": "phpcollection/phpcollection", + "version": "0.4.0", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-collection.git", + "reference": "b8bf55a0a929ca43b01232b36719f176f86c7e83" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-collection/zipball/b8bf55a0a929ca43b01232b36719f176f86c7e83", + "reference": "b8bf55a0a929ca43b01232b36719f176f86c7e83", + "shasum": "" + }, + "require": { + "phpoption/phpoption": "1.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.3-dev" + } + }, + "autoload": { + "psr-0": { + "PhpCollection": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh", + "role": "Developer of wrapped JMSSerializerBundle" + } + ], + "description": "General-Purpose Collection Library for PHP", + "keywords": [ + "collection", + "list", + "map", + "sequence", + "set" + ], + "time": "2014-03-11 13:46:42" + }, + { + "name": "phpdocumentor/fileset", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/Fileset.git", + "reference": "bfa78d8fa9763dfce6d0e5d3730c1d8ab25d34b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/Fileset/zipball/bfa78d8fa9763dfce6d0e5d3730c1d8ab25d34b0", + "reference": "bfa78d8fa9763dfce6d0e5d3730c1d8ab25d34b0", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/finder": "~2.1" + }, + "require-dev": { + "phpunit/phpunit": "~3.7" + }, + "type": "library", + "autoload": { + "psr-0": { + "phpDocumentor": [ + "src/", + "tests/unit/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Fileset component for collecting a set of files given directories and file paths", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "files", + "fileset", + "phpdoc" + ], + "time": "2013-08-06 21:07:42" + }, + { + "name": "phpdocumentor/graphviz", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/GraphViz.git", + "reference": "aa243118c8a055fc853c02802e8503c5435862f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/GraphViz/zipball/aa243118c8a055fc853c02802e8503c5435862f7", + "reference": "aa243118c8a055fc853c02802e8503c5435862f7", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~3.7" + }, + "type": "library", + "autoload": { + "psr-0": { + "phpDocumentor": [ + "src/", + "tests/unit" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "time": "2014-07-19 06:52:59" + }, + { + "name": "phpdocumentor/phpdocumentor", + "version": "v2.8.5", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/phpDocumentor2.git", + "reference": "adfb4affa80e8cc0134616f2d2d264dd25c243eb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/phpDocumentor2/zipball/adfb4affa80e8cc0134616f2d2d264dd25c243eb", + "reference": "adfb4affa80e8cc0134616f2d2d264dd25c243eb", + "shasum": "" + }, + "require": { + "cilex/cilex": "~1.0", + "erusev/parsedown": "~1.0", + "herrera-io/phar-update": "1.0.3", + "jms/serializer": "~0.12", + "monolog/monolog": "~1.6", + "php": ">=5.3.3", + "phpdocumentor/fileset": "~1.0", + "phpdocumentor/graphviz": "~1.0", + "phpdocumentor/reflection": "~1.0", + "phpdocumentor/reflection-docblock": "~2.0", + "symfony/config": "~2.3", + "symfony/console": "~2.3", + "symfony/event-dispatcher": "~2.1", + "symfony/process": "~2.0", + "symfony/stopwatch": "~2.3", + "symfony/validator": "~2.2", + "twig/twig": "~1.3", + "zendframework/zend-cache": "~2.1", + "zendframework/zend-config": "~2.1", + "zendframework/zend-filter": "~2.1", + "zendframework/zend-i18n": "~2.1", + "zendframework/zend-serializer": "~2.1", + "zendframework/zend-servicemanager": "~2.1", + "zendframework/zend-stdlib": "~2.1", + "zetacomponents/document": ">=1.3.1" + }, + "require-dev": { + "behat/behat": "~3.0", + "mikey179/vfsstream": "~1.2", + "mockery/mockery": "~0.9@dev", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~1.4", + "symfony/expression-language": "~2.4" + }, + "suggest": { + "ext-twig": "Enabling the twig extension improves the generation of twig based templates.", + "ext-xslcache": "Enabling the XSLCache extension improves the generation of xml based templates." + }, + "bin": [ + "bin/phpdoc.php", + "bin/phpdoc" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "2.9-dev" + } + }, + "autoload": { + "psr-0": { + "phpDocumentor": [ + "src/", + "tests/unit/" + ], + "Cilex\\Provider": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Documentation Generator for PHP", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "api", + "application", + "dga", + "documentation", + "phpdoc" + ], + "time": "2015-07-28 06:36:40" + }, + { + "name": "phpdocumentor/reflection", + "version": "1.0.7", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/Reflection.git", + "reference": "fc40c3f604ac2287eb5c314174d5109b2c699372" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/Reflection/zipball/fc40c3f604ac2287eb5c314174d5109b2c699372", + "reference": "fc40c3f604ac2287eb5c314174d5109b2c699372", + "shasum": "" + }, + "require": { + "nikic/php-parser": "~0.9.4", + "php": ">=5.3.3", + "phpdocumentor/reflection-docblock": "~2.0", + "psr/log": "~1.0" + }, + "require-dev": { + "behat/behat": "~2.4", + "mockery/mockery": "~0.8", + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "phpDocumentor": [ + "src/", + "tests/unit/", + "tests/mocks/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Reflection library to do Static Analysis for PHP Projects", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "time": "2014-11-14 11:43:04" + }, { "name": "phpdocumentor/reflection-docblock", "version": "2.0.4", @@ -541,17 +1600,66 @@ "time": "2015-02-03 12:10:50" }, { - "name": "phpspec/prophecy", - "version": "v1.4.1", + "name": "phpoption/phpoption", + "version": "1.4.0", "source": { "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373" + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "5d099bcf0393908bf4ad69cc47dafb785d51f7f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373", - "reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/5d099bcf0393908bf4ad69cc47dafb785d51f7f5", + "reference": "5d099bcf0393908bf4ad69cc47dafb785d51f7f5", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-0": { + "PhpOption\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache2" + ], + "authors": [ + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh", + "role": "Developer of wrapped JMSSerializerBundle" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "time": "2014-01-09 22:37:17" + }, + { + "name": "phpspec/prophecy", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4745ded9307786b730d7a60df5cb5a6c43cf95f7", + "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7", "shasum": "" }, "require": { @@ -598,7 +1706,7 @@ "spy", "stub" ], - "time": "2015-04-27 22:15:08" + "time": "2015-08-13 10:07:40" }, { "name": "phpunit/php-code-coverage", @@ -793,16 +1901,16 @@ }, { "name": "phpunit/php-token-stream", - "version": "1.4.3", + "version": "1.4.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "7a9b0969488c3c54fd62b4d504b3ec758fd005d9" + "reference": "09fc125d65c344c53a7c7ad8f261e3f3af9f76c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/7a9b0969488c3c54fd62b4d504b3ec758fd005d9", - "reference": "7a9b0969488c3c54fd62b4d504b3ec758fd005d9", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/09fc125d65c344c53a7c7ad8f261e3f3af9f76c5", + "reference": "09fc125d65c344c53a7c7ad8f261e3f3af9f76c5", "shasum": "" }, "require": { @@ -838,7 +1946,7 @@ "keywords": [ "tokenizer" ], - "time": "2015-06-19 03:43:16" + "time": "2015-08-13 14:23:08" }, { "name": "phpunit/phpunit", @@ -968,6 +2076,52 @@ ], "time": "2015-07-10 06:54:24" }, + { + "name": "pimple/pimple", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/silexphp/Pimple.git", + "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/silexphp/Pimple/zipball/2019c145fe393923f3441b23f29bbdfaa5c58c4d", + "reference": "2019c145fe393923f3441b23f29bbdfaa5c58c4d", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-0": { + "Pimple": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Pimple is a simple Dependency Injection Container for PHP 5.3", + "homepage": "http://pimple.sensiolabs.org", + "keywords": [ + "container", + "dependency injection" + ], + "time": "2013-11-22 08:30:29" + }, { "name": "psr/http-message", "version": "1.0", @@ -1017,6 +2171,44 @@ ], "time": "2015-05-04 20:22:00" }, + { + "name": "psr/log", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", + "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", + "shasum": "" + }, + "type": "library", + "autoload": { + "psr-0": { + "Psr\\Log\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2012-12-21 11:40:51" + }, { "name": "react/promise", "version": "v2.2.1", @@ -1432,6 +2624,52 @@ "homepage": "https://github.com/sebastianbergmann/version", "time": "2015-06-21 13:59:46" }, + { + "name": "seld/jsonlint", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "863ae85c6d3ef60ca49cb12bd051c4a0648c40c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/863ae85c6d3ef60ca49cb12bd051c4a0648c40c4", + "reference": "863ae85c6d3ef60ca49cb12bd051c4a0648c40c4", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "bin": [ + "bin/jsonlint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Seld\\JsonLint\\": "src/Seld/JsonLint/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "JSON Linter", + "keywords": [ + "json", + "linter", + "parser", + "validator" + ], + "time": "2015-01-04 21:18:15" + }, { "name": "symfony/browser-kit", "version": "v2.7.3", @@ -1487,6 +2725,56 @@ "homepage": "https://symfony.com", "time": "2015-07-09 16:07:40" }, + { + "name": "symfony/config", + "version": "v2.7.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/Config.git", + "reference": "6c905bbed1e728226de656e4c07d620dfe9e80d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Config/zipball/6c905bbed1e728226de656e4c07d620dfe9e80d9", + "reference": "6c905bbed1e728226de656e4c07d620dfe9e80d9", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/filesystem": "~2.3" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Config Component", + "homepage": "https://symfony.com", + "time": "2015-07-09 16:07:40" + }, { "name": "symfony/console", "version": "v2.7.3", @@ -1708,6 +2996,55 @@ "homepage": "https://symfony.com", "time": "2015-06-18 19:21:56" }, + { + "name": "symfony/filesystem", + "version": "v2.7.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/Filesystem.git", + "reference": "2d7b2ddaf3f548f4292df49a99d19c853d43f0b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Filesystem/zipball/2d7b2ddaf3f548f4292df49a99d19c853d43f0b8", + "reference": "2d7b2ddaf3f548f4292df49a99d19c853d43f0b8", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Filesystem Component", + "homepage": "https://symfony.com", + "time": "2015-07-09 16:07:40" + }, { "name": "symfony/finder", "version": "v2.7.3", @@ -1756,6 +3093,953 @@ "description": "Symfony Finder Component", "homepage": "https://symfony.com", "time": "2015-07-09 16:07:40" + }, + { + "name": "symfony/process", + "version": "v2.7.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/Process.git", + "reference": "48aeb0e48600321c272955132d7606ab0a49adb3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Process/zipball/48aeb0e48600321c272955132d7606ab0a49adb3", + "reference": "48aeb0e48600321c272955132d7606ab0a49adb3", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Process Component", + "homepage": "https://symfony.com", + "time": "2015-07-01 11:25:50" + }, + { + "name": "symfony/stopwatch", + "version": "v2.7.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/Stopwatch.git", + "reference": "b07a866719bbac5294c67773340f97b871733310" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Stopwatch/zipball/b07a866719bbac5294c67773340f97b871733310", + "reference": "b07a866719bbac5294c67773340f97b871733310", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "symfony/phpunit-bridge": "~2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Stopwatch Component", + "homepage": "https://symfony.com", + "time": "2015-07-01 18:23:16" + }, + { + "name": "symfony/translation", + "version": "v2.7.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/Translation.git", + "reference": "c8dc34cc936152c609cdd722af317e4239d10dd6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Translation/zipball/c8dc34cc936152c609cdd722af317e4239d10dd6", + "reference": "c8dc34cc936152c609cdd722af317e4239d10dd6", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "conflict": { + "symfony/config": "<2.7" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.7", + "symfony/intl": "~2.3", + "symfony/phpunit-bridge": "~2.7", + "symfony/yaml": "~2.2" + }, + "suggest": { + "psr/log": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Translation Component", + "homepage": "https://symfony.com", + "time": "2015-07-09 16:07:40" + }, + { + "name": "symfony/validator", + "version": "v2.7.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/Validator.git", + "reference": "646df03e635a8a232804274401449ccdf5f03cad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Validator/zipball/646df03e635a8a232804274401449ccdf5f03cad", + "reference": "646df03e635a8a232804274401449ccdf5f03cad", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/translation": "~2.4" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "doctrine/cache": "~1.0", + "egulias/email-validator": "~1.2,>=1.2.1", + "symfony/config": "~2.2", + "symfony/expression-language": "~2.4", + "symfony/http-foundation": "~2.1", + "symfony/intl": "~2.3", + "symfony/phpunit-bridge": "~2.7", + "symfony/property-access": "~2.3", + "symfony/yaml": "~2.0,>=2.0.5" + }, + "suggest": { + "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", + "doctrine/cache": "For using the default cached annotation reader and metadata cache.", + "egulias/email-validator": "Strict (RFC compliant) email validation", + "symfony/config": "", + "symfony/expression-language": "For using the 2.4 Expression validator", + "symfony/http-foundation": "", + "symfony/intl": "", + "symfony/property-access": "For using the 2.4 Validator API", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Validator\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Validator Component", + "homepage": "https://symfony.com", + "time": "2015-07-31 06:49:15" + }, + { + "name": "twig/twig", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "1ea4e5f81c6d005fe84d0b38e1c4f1955eb86844" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/1ea4e5f81c6d005fe84d0b38e1c4f1955eb86844", + "reference": "1ea4e5f81c6d005fe84d0b38e1c4f1955eb86844", + "shasum": "" + }, + "require": { + "php": ">=5.2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.20-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "http://twig.sensiolabs.org/contributors", + "role": "Contributors" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "http://twig.sensiolabs.org", + "keywords": [ + "templating" + ], + "time": "2015-08-12 15:56:39" + }, + { + "name": "zendframework/zend-cache", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-cache.git", + "reference": "5999e5a03f7dcf82abbbe67eea74da641f959684" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-cache/zipball/5999e5a03f7dcf82abbbe67eea74da641f959684", + "reference": "5999e5a03f7dcf82abbbe67eea74da641f959684", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-eventmanager": "~2.5", + "zendframework/zend-serializer": "~2.5", + "zendframework/zend-servicemanager": "~2.5", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-session": "~2.5" + }, + "suggest": { + "ext-apc": "APC >= 3.1.6 to use the APC storage adapter", + "ext-dba": "DBA, to use the DBA storage adapter", + "ext-memcached": "Memcached >= 1.0.0 to use the Memcached storage adapter", + "ext-mongo": "Mongo, to use MongoDb storage adapter", + "ext-wincache": "WinCache, to use the WinCache storage adapter", + "mongofill/mongofill": "Alternative to ext-mongo - a pure PHP implementation designed as a drop in replacement", + "zendframework/zend-serializer": "Zend\\Serializer component", + "zendframework/zend-session": "Zend\\Session component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides a generic way to cache any data", + "homepage": "https://github.com/zendframework/zend-cache", + "keywords": [ + "cache", + "zf2" + ], + "time": "2015-06-03 15:31:59" + }, + { + "name": "zendframework/zend-config", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-config.git", + "reference": "ec49b1df1bdd9772df09dc2f612fbfc279bf4c27" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-config/zipball/ec49b1df1bdd9772df09dc2f612fbfc279bf4c27", + "reference": "ec49b1df1bdd9772df09dc2f612fbfc279bf4c27", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-filter": "~2.5", + "zendframework/zend-i18n": "~2.5", + "zendframework/zend-json": "~2.5", + "zendframework/zend-mvc": "~2.5", + "zendframework/zend-servicemanager": "~2.5" + }, + "suggest": { + "zendframework/zend-filter": "Zend\\Filter component", + "zendframework/zend-i18n": "Zend\\I18n component", + "zendframework/zend-json": "Zend\\Json to use the Json reader or writer classes", + "zendframework/zend-servicemanager": "Zend\\ServiceManager for use with the Config Factory to retrieve reader and writer instances" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Config\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides a nested object property based user interface for accessing this configuration data within application code", + "homepage": "https://github.com/zendframework/zend-config", + "keywords": [ + "config", + "zf2" + ], + "time": "2015-06-03 15:32:00" + }, + { + "name": "zendframework/zend-eventmanager", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-eventmanager.git", + "reference": "d94a16039144936f107f906896349900fd634443" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-eventmanager/zipball/d94a16039144936f107f906896349900fd634443", + "reference": "d94a16039144936f107f906896349900fd634443", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\EventManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-eventmanager", + "keywords": [ + "eventmanager", + "zf2" + ], + "time": "2015-06-03 15:32:01" + }, + { + "name": "zendframework/zend-filter", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-filter.git", + "reference": "93e6990a198e6cdd811064083acac4693f4b29ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-filter/zipball/93e6990a198e6cdd811064083acac4693f4b29ae", + "reference": "93e6990a198e6cdd811064083acac4693f4b29ae", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-config": "~2.5", + "zendframework/zend-crypt": "~2.5", + "zendframework/zend-i18n": "~2.5", + "zendframework/zend-loader": "~2.5", + "zendframework/zend-servicemanager": "~2.5", + "zendframework/zend-uri": "~2.5" + }, + "suggest": { + "zendframework/zend-crypt": "Zend\\Crypt component", + "zendframework/zend-i18n": "Zend\\I18n component", + "zendframework/zend-servicemanager": "Zend\\ServiceManager component", + "zendframework/zend-uri": "Zend\\Uri component for UriNormalize filter" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Filter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides a set of commonly needed data filters", + "homepage": "https://github.com/zendframework/zend-filter", + "keywords": [ + "filter", + "zf2" + ], + "time": "2015-06-03 15:32:01" + }, + { + "name": "zendframework/zend-i18n", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-i18n.git", + "reference": "509271eb7947e4aabebfc376104179cffea42696" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-i18n/zipball/509271eb7947e4aabebfc376104179cffea42696", + "reference": "509271eb7947e4aabebfc376104179cffea42696", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-cache": "~2.5", + "zendframework/zend-config": "~2.5", + "zendframework/zend-eventmanager": "~2.5", + "zendframework/zend-filter": "~2.5", + "zendframework/zend-servicemanager": "~2.5", + "zendframework/zend-validator": "~2.5", + "zendframework/zend-view": "~2.5" + }, + "suggest": { + "ext-intl": "Required for most features of Zend\\I18n; included in default builds of PHP", + "zendframework/zend-cache": "Zend\\Cache component", + "zendframework/zend-config": "Zend\\Config component", + "zendframework/zend-eventmanager": "You should install this package to use the events in the translator", + "zendframework/zend-filter": "You should install this package to use the provided filters", + "zendframework/zend-resources": "Translation resources", + "zendframework/zend-servicemanager": "Zend\\ServiceManager component", + "zendframework/zend-validator": "You should install this package to use the provided validators", + "zendframework/zend-view": "You should install this package to use the provided view helpers" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\I18n\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-i18n", + "keywords": [ + "i18n", + "zf2" + ], + "time": "2015-06-03 15:32:01" + }, + { + "name": "zendframework/zend-json", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-json.git", + "reference": "c74eaf17d2dd37dc1e964be8dfde05706a821ebc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-json/zipball/c74eaf17d2dd37dc1e964be8dfde05706a821ebc", + "reference": "c74eaf17d2dd37dc1e964be8dfde05706a821ebc", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-http": "~2.5", + "zendframework/zend-server": "~2.5", + "zendframework/zendxml": "~1.0" + }, + "suggest": { + "zendframework/zend-http": "Zend\\Http component", + "zendframework/zend-server": "Zend\\Server component", + "zendframework/zendxml": "To support Zend\\Json\\Json::fromXml() usage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Json\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides convenience methods for serializing native PHP to JSON and decoding JSON to native PHP", + "homepage": "https://github.com/zendframework/zend-json", + "keywords": [ + "json", + "zf2" + ], + "time": "2015-06-03 15:32:01" + }, + { + "name": "zendframework/zend-math", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-math.git", + "reference": "9f02a1ac4d3374d3332c80f9215deec9c71558fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-math/zipball/9f02a1ac4d3374d3332c80f9215deec9c71558fc", + "reference": "9f02a1ac4d3374d3332c80f9215deec9c71558fc", + "shasum": "" + }, + "require": { + "php": ">=5.3.23" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "ircmaxell/random-lib": "~1.1", + "phpunit/phpunit": "~4.0", + "zendframework/zend-servicemanager": "~2.5" + }, + "suggest": { + "ext-bcmath": "If using the bcmath functionality", + "ext-gmp": "If using the gmp functionality", + "ircmaxell/random-lib": "Fallback random byte generator for Zend\\Math\\Rand if OpenSSL/Mcrypt extensions are unavailable", + "zendframework/zend-servicemanager": ">= current version, if using the BigInteger::factory functionality" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-math", + "keywords": [ + "math", + "zf2" + ], + "time": "2015-06-03 15:32:02" + }, + { + "name": "zendframework/zend-serializer", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-serializer.git", + "reference": "b7208eb17dc4a4fb3a660b85e6c4af035eeed40c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-serializer/zipball/b7208eb17dc4a4fb3a660b85e6c4af035eeed40c", + "reference": "b7208eb17dc4a4fb3a660b85e6c4af035eeed40c", + "shasum": "" + }, + "require": { + "php": ">=5.3.23", + "zendframework/zend-json": "~2.5", + "zendframework/zend-math": "~2.5", + "zendframework/zend-stdlib": "~2.5" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-servicemanager": "~2.5" + }, + "suggest": { + "zendframework/zend-servicemanager": "To support plugin manager support" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Serializer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides an adapter based interface to simply generate storable representation of PHP types by different facilities, and recover", + "homepage": "https://github.com/zendframework/zend-serializer", + "keywords": [ + "serializer", + "zf2" + ], + "time": "2015-06-03 15:32:02" + }, + { + "name": "zendframework/zend-servicemanager", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-servicemanager.git", + "reference": "3b22c403e351d92526c642cba0bd810bc22e1c56" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-servicemanager/zipball/3b22c403e351d92526c642cba0bd810bc22e1c56", + "reference": "3b22c403e351d92526c642cba0bd810bc22e1c56", + "shasum": "" + }, + "require": { + "php": ">=5.3.23" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-di": "~2.5", + "zendframework/zend-mvc": "~2.5" + }, + "suggest": { + "ocramius/proxy-manager": "ProxyManager 0.5.* to handle lazy initialization of services", + "zendframework/zend-di": "Zend\\Di component" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\ServiceManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-servicemanager", + "keywords": [ + "servicemanager", + "zf2" + ], + "time": "2015-06-03 15:32:02" + }, + { + "name": "zendframework/zend-stdlib", + "version": "2.5.1", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-stdlib.git", + "reference": "cc8e90a60dd5d44b9730b77d07b97550091da1ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/cc8e90a60dd5d44b9730b77d07b97550091da1ae", + "reference": "cc8e90a60dd5d44b9730b77d07b97550091da1ae", + "shasum": "" + }, + "require": { + "php": ">=5.3.23" + }, + "require-dev": { + "fabpot/php-cs-fixer": "1.7.*", + "phpunit/phpunit": "~4.0", + "zendframework/zend-config": "~2.5", + "zendframework/zend-eventmanager": "~2.5", + "zendframework/zend-filter": "~2.5", + "zendframework/zend-inputfilter": "~2.5", + "zendframework/zend-serializer": "~2.5", + "zendframework/zend-servicemanager": "~2.5" + }, + "suggest": { + "zendframework/zend-eventmanager": "To support aggregate hydrator usage", + "zendframework/zend-filter": "To support naming strategy hydrator usage", + "zendframework/zend-serializer": "Zend\\Serializer component", + "zendframework/zend-servicemanager": "To support hydrator plugin manager usage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev", + "dev-develop": "2.6-dev" + } + }, + "autoload": { + "psr-4": { + "Zend\\Stdlib\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "homepage": "https://github.com/zendframework/zend-stdlib", + "keywords": [ + "stdlib", + "zf2" + ], + "time": "2015-06-03 15:32:03" + }, + { + "name": "zetacomponents/base", + "version": "1.9", + "source": { + "type": "git", + "url": "https://github.com/zetacomponents/Base.git", + "reference": "f20df24e8de3e48b6b69b2503f917e457281e687" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zetacomponents/Base/zipball/f20df24e8de3e48b6b69b2503f917e457281e687", + "reference": "f20df24e8de3e48b6b69b2503f917e457281e687", + "shasum": "" + }, + "require-dev": { + "zetacomponents/unit-test": "*" + }, + "type": "library", + "autoload": { + "classmap": [ + "src" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Sergey Alexeev" + }, + { + "name": "Sebastian Bergmann" + }, + { + "name": "Jan Borsodi" + }, + { + "name": "Raymond Bosman" + }, + { + "name": "Frederik Holljen" + }, + { + "name": "Kore Nordmann" + }, + { + "name": "Derick Rethans" + }, + { + "name": "Vadym Savchuk" + }, + { + "name": "Tobias Schlitt" + }, + { + "name": "Alexandru Stanoi" + } + ], + "description": "The Base package provides the basic infrastructure that all packages rely on. Therefore every component relies on this package.", + "homepage": "https://github.com/zetacomponents", + "time": "2014-09-19 03:28:34" + }, + { + "name": "zetacomponents/document", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/zetacomponents/Document.git", + "reference": "688abfde573cf3fe0730f82538fbd7aa9fc95bc8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zetacomponents/Document/zipball/688abfde573cf3fe0730f82538fbd7aa9fc95bc8", + "reference": "688abfde573cf3fe0730f82538fbd7aa9fc95bc8", + "shasum": "" + }, + "require": { + "zetacomponents/base": "*" + }, + "require-dev": { + "zetacomponents/unit-test": "dev-master" + }, + "type": "library", + "autoload": { + "classmap": [ + "src" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Sebastian Bergmann" + }, + { + "name": "Kore Nordmann" + }, + { + "name": "Derick Rethans" + }, + { + "name": "Tobias Schlitt" + }, + { + "name": "Alexandru Stanoi" + } + ], + "description": "The Document components provides a general conversion framework for different semantic document markup languages like XHTML, Docbook, RST and similar.", + "homepage": "https://github.com/zetacomponents", + "time": "2013-12-19 11:40:00" } ], "aliases": [], diff --git a/documentation/Album configuration.md b/documentation/Album configuration.md deleted file mode 100644 index b23f87e5..00000000 --- a/documentation/Album configuration.md +++ /dev/null @@ -1,143 +0,0 @@ -# Album and special features configuration -It's possible to configure a Gallery album via a simple text file, using the [Yaml](https://en.wikipedia.org/wiki/YAML) markup language. - -## Features - -### Special features - -The following special features are currently implemented: - -* Enabling native SVG support -* Enabling access to external shares - -### Albums - -The following album features are currently implemented: - -* Adding a link to a file containing a description -* Typing a simple copyright statement directly in the configuration file -* Adding a link to a file containing a copyright statement -* Defining a sort type and order -* Defining if sub-albums will inherit the configuration - -## Configuration - -### File format -UTF-8, without BOM. A file created from within the web GUI works. - -### Structure -It's advised to add a comment in the file, so that people stumbling upon that file know what it's for. -Comments start with #. - -Spacing is created using 2 spaces. **Do not use tabs** - -Take a look at the format documentation if you're getting error messages: -http://symfony.com/doc/current/components/yaml/yaml_format.html - -``` ---- -# Gallery configuration file -information: - description: This is an **album description** which is only shown if there is no `description_link` - description_link: readme.md - copyright: Copyright 2003-2015 [interfaSys sàrl](http://www.interfasys.ch), Switzerland - copyright_link: copyright.md - inherit: yes -sorting: - type: date - order: des - inherit: yes -features: - external_shares: yes - native_svg: yes -``` - -### Supported variables - -* `description`: a markdown formatted string which will be displayed in the info box. It can spread over multiple lines using the Yaml markers -* `description_link`: a markdown file located within the album and which will be parsed and displayed in the info box instead of the description -* `copyright`: a markdown formatted string. You can add links to external resources if you need to. -* `copyright_link`: any file (i.e. copyright.html), in the album itself, which will be downloaded when the user clicks on the link -* `sorting`: `date` or `name`. `date` only works for files -* `sort_order`: `asc` or `des` -* `inherit`: set it to yes if you want sub-folders to inherit this part of the configuration -* `external_shares`: set it to yes in your root configuration file if you want to be able to load images coming from external clouds -* `native_svg`: set it to yes in your root configuration file if you want to be able to see SVG images rendered by the browser. This may represent a security risk if you can't fully trust your SVG files - -See [this page](http://www.markitdown.net/markdown) for the markdown syntax - -_Note: Do not add links to your `copyright` string if you intend on adding a `copyright link`_ - -_Warning: External shares are 20-50 times slower than local shares. Be prepared to wait a long time before being able to see all the images contained in a shared album_ - -### Possible future extensions - -* Different sorting parameters for albums - -## Sorting -* in case only the sort `type` variable has been set, the default sort order will be used -* in case only the sort `order` variable has been found, the sort configuration will be ignored and the script will keep looking for a valid configuration in upper folders - -## Tips -* To enable a feature such as native SVG in a public share, you need to create in that folder a configuration file containing that feature -* If you share a folder publicly, don't forget to add all the files you link to (description.md or copyright.md per example) inside the shared folder as the user won't have access to files stored in the parent folder -* Since people can download a whole folder as an archive, it's usually best to include all files within a shared folder as opposed to adding text directly in the configuration file - -## Examples - -### Sorting only - -Applies to the current folder only - -``` ---- -# Gallery configuration file -sorting: - type: date - order: asc -``` - -### Short description and link to copyright document - -Applies to the current folder and all of its sub-folders - -This also shows you the syntax you can use to spread a description over multiple lines -``` ---- -# Gallery configuration file -information: - description: | # La Maison Bleue, Winter '16 - This is our Winter 2016 collection shot in **Kyoto** - Visit out [website](http://www.secretdesigner.ninja) for more information - copyright: Copyright 2015 La Maison Bleue, France - copyright_link: copyright_2015_lmb.html - inherit: yes -``` - -### Load images from external clouds - -**Features can only be defined in the root folder** - -You can add standard configuration items to the same configuration file - -``` ---- -# Gallery configuration file -features: - external_shares: yes -... -``` - -### Enabling native SVG - -**Special features can only be defined in the root folder** - -You can add standard configuration items to the same configuration file - -``` ---- -# Gallery configuration file -features: - native_svg: yes -... -``` diff --git a/documentation/How to ignore folders.md b/documentation/How to ignore folders.md deleted file mode 100644 index eaa54c8d..00000000 --- a/documentation/How to ignore folders.md +++ /dev/null @@ -1,16 +0,0 @@ -# How to ignore folders -It's possible to prevent the content of some folders to be displayed in Gallery - -## Steps to follow -1. Switch to the "Files" app -2. Navigate to the folder you want to hide -3. Click on the "New" button sitting above the list of files -4. Type ".nomedia" as the filename - -You're done. The folder will be ignored in Gallery from now on. - -You can also create that file in your mobile or desktop OS and sync it with your ownCloud. - -## Tips -On Windows, it's not straight forward to create filenames which start with a dot. -The trick is to create ".nomedia." file with two dots. Windows will remove the trailing one. \ No newline at end of file diff --git a/documentation/developers.html b/documentation/developers.html new file mode 100644 index 00000000..bab6a08e --- /dev/null +++ b/documentation/developers.html @@ -0,0 +1,17 @@ + + + + + Developer documentation for ownCloud Gallery + + + +

Developer documentation for ownCloud Gallery

+ + + + + diff --git a/documentation/wiki b/documentation/wiki new file mode 160000 index 00000000..0fd344be --- /dev/null +++ b/documentation/wiki @@ -0,0 +1 @@ +Subproject commit 0fd344beaa832a08cd8e2bf7637dec5a3bcae912 diff --git a/phpdoc.xml b/phpdoc.xml new file mode 100644 index 00000000..fbaeb299 --- /dev/null +++ b/phpdoc.xml @@ -0,0 +1,29 @@ + + + Gallery PHP code documentation + + build/documentation/api/_structure + + TODO + FIXME + + + php + + + + build/documentation/api + + +