From 8503a8cd1e7d697bd23fc09adb96182b416ded36 Mon Sep 17 00:00:00 2001 From: angelsanchez Date: Sat, 17 Nov 2012 18:53:19 +0100 Subject: [PATCH] Integration with GruntJS --- CONTRIBUTING.md | 35 + LICENSE-New-BSD | 25 + README.md | 53 +- changelog.txt | 79 - js/iris-0.4.5.js => dist/iris.js | 4174 ++++---- dist/iris.min.js | 4 + grunt.js | 60 + iris-example/pom.xml | 31 - iris-example/src/main/webapp/WEB-INF/web.xml | 12 - iris-example/src/main/webapp/css/example.css | 103 - .../src/main/webapp/example/addon/radios.js | 76 - .../main/webapp/example/addon/validator.js | 97 - iris-example/src/main/webapp/example/init.js | 34 - .../example/screen/example_addon_radios.html | 14 - .../example/screen/example_addon_radios.js | 30 - .../screen/example_addon_validation.html | 17 - .../screen/example_addon_validation.js | 48 - .../example/screen/example_destroy.html | 58 - .../webapp/example/screen/example_destroy.js | 27 - .../example/screen/example_destroy_all.html | 15 - .../example/screen/example_destroy_all.js | 18 - .../example/screen/example_instance.html | 18 - .../webapp/example/screen/example_instance.js | 12 - .../webapp/example/screen/example_list.html | 25 - .../webapp/example/screen/example_list.js | 14 - .../example/screen/example_nested_uis.html | 32 - .../example/screen/example_nested_uis.js | 10 - .../example/screen/example_screen_params.html | 20 - .../example/screen/example_screen_params.js | 28 - .../screen/example_screen_params_child.html | 22 - .../screen/example_screen_params_child.js | 10 - .../screen/example_template_params.html | 78 - .../example/screen/example_template_params.js | 15 - .../src/main/webapp/example/screen/main.html | 40 - .../src/main/webapp/example/screen/main.js | 19 - .../src/main/webapp/example/ui/button.html | 3 - .../src/main/webapp/example/ui/button.js | 142 - .../src/main/webapp/example/ui/example.html | 3 - .../src/main/webapp/example/ui/example.js | 10 - .../main/webapp/example/ui/example_basic.html | 3 - .../main/webapp/example/ui/example_basic.js | 7 - .../src/main/webapp/example/ui/nested.html | 5 - .../src/main/webapp/example/ui/nested.js | 16 - iris-example/src/main/webapp/index.html | 20 - .../src/main/webapp/js/iris-0.4.0.min.js | 20 - .../src/main/webapp/js/iris-0.4.2.min.js | 25 - .../src/main/webapp/js/iris-0.4.3.min.js | 27 - .../src/main/webapp/js/iris-0.4.4.min.js | 28 - .../src/main/webapp/js/iris-0.4.5.min.js | 35 - iris-example/src/main/webapp/js/iris.js | 2095 ---- .../src/main/webapp/js/jquery-1.5.1.min.js | 16 - .../src/main/webapp/js/jquery-1.5.2.min.js | 16 - .../src/main/webapp/js/jquery-1.5.min.js | 16 - .../src/main/webapp/js/jquery-1.6.1.min.js | 18 - .../src/main/webapp/js/jquery-1.6.2.min.js | 18 - .../src/main/webapp/js/jquery-1.6.3.min.js | 4 - .../src/main/webapp/js/jquery-1.6.4.min.js | 4 - .../src/main/webapp/js/jquery-1.6.min.js | 16 - .../src/main/webapp/js/jquery-1.7.1.min.js | 4 - .../src/main/webapp/js/jquery-1.7.min.js | 4 - .../src/main/webapp/js/jquery-1.8.0.min.js | 2 - .../src/main/webapp/js/jquery-1.8.2.min.js | 2 - iris-example/src/main/webapp/js/zepto.min.js | 2 - iris-example/src/main/webapp/lang/en-us.js | 13 - iris-example/src/main/webapp/lang/es-es.js | 13 - iris-example/src/main/webapp/library.html | 20 - iris-example/src/main/webapp/library/boot.js | 24 - .../webapp/library/screen/author_details.html | 4 - .../webapp/library/screen/author_details.js | 16 - .../webapp/library/screen/author_edit.html | 9 - .../main/webapp/library/screen/author_edit.js | 28 - .../main/webapp/library/screen/authors.html | 10 - .../src/main/webapp/library/screen/authors.js | 39 - .../webapp/library/screen/book_details.html | 4 - .../webapp/library/screen/book_details.js | 16 - .../main/webapp/library/screen/book_edit.html | 9 - .../main/webapp/library/screen/book_edit.js | 28 - .../src/main/webapp/library/screen/books.html | 7 - .../src/main/webapp/library/screen/books.js | 32 - .../src/main/webapp/library/screen/main.html | 13 - .../src/main/webapp/library/screen/main.js | 14 - .../webapp/memory-leak-test/memoryleak.js | 16 - .../webapp/memory-leak-test/screen/main.html | 17 - .../webapp/memory-leak-test/screen/main.js | 92 - iris-example/src/main/webapp/memoryleak.html | 52 - .../src/main/webapp/memoryleak_prototype.html | 118 - .../src/main/webapp/memoryleak_zepto.html | 19 - iris-example/src/main/webapp/pix/checkbox.png | Bin 2465 -> 0 bytes iris.jquery.json | 28 + js/iris-0.4.2.js | 1872 ---- js/iris-0.4.2.min.js | 25 - js/iris-0.4.3.js | 2022 ---- js/iris-0.4.3.min.info | 85 - js/iris-0.4.3.min.js | 27 - js/iris-0.4.4.js | 2091 ---- js/iris-0.4.4.min.info | 93 - js/iris-0.4.4.min.js | 28 - js/iris-0.4.5.min.info | 51 - js/iris-0.4.5.min.js | 35 - jsdoc-toolkit/README.txt | 183 - jsdoc-toolkit/app/frame.js | 33 - jsdoc-toolkit/app/frame/Chain.js | 102 - jsdoc-toolkit/app/frame/Dumper.js | 144 - jsdoc-toolkit/app/frame/Hash.js | 84 - jsdoc-toolkit/app/frame/Link.js | 173 - jsdoc-toolkit/app/frame/Namespace.js | 10 - jsdoc-toolkit/app/frame/Opt.js | 134 - jsdoc-toolkit/app/frame/Reflection.js | 26 - jsdoc-toolkit/app/frame/String.js | 93 - jsdoc-toolkit/app/frame/Testrun.js | 129 - jsdoc-toolkit/app/handlers/FOODOC.js | 26 - jsdoc-toolkit/app/handlers/XMLDOC.js | 26 - .../app/handlers/XMLDOC/DomReader.js | 159 - jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js | 16 - jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js | 292 - jsdoc-toolkit/app/lib/JSDOC.js | 106 - jsdoc-toolkit/app/lib/JSDOC/DocComment.js | 204 - jsdoc-toolkit/app/lib/JSDOC/DocTag.js | 294 - jsdoc-toolkit/app/lib/JSDOC/JsDoc.js | 140 - jsdoc-toolkit/app/lib/JSDOC/JsPlate.js | 109 - jsdoc-toolkit/app/lib/JSDOC/Lang.js | 144 - jsdoc-toolkit/app/lib/JSDOC/Parser.js | 146 - jsdoc-toolkit/app/lib/JSDOC/PluginManager.js | 33 - jsdoc-toolkit/app/lib/JSDOC/Symbol.js | 644 -- jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js | 243 - jsdoc-toolkit/app/lib/JSDOC/TextStream.js | 41 - jsdoc-toolkit/app/lib/JSDOC/Token.js | 18 - jsdoc-toolkit/app/lib/JSDOC/TokenReader.js | 332 - jsdoc-toolkit/app/lib/JSDOC/TokenStream.js | 133 - jsdoc-toolkit/app/lib/JSDOC/Util.js | 32 - jsdoc-toolkit/app/lib/JSDOC/Walker.js | 507 - jsdoc-toolkit/app/main.js | 111 - jsdoc-toolkit/app/plugins/commentSrcJson.js | 20 - .../app/plugins/frameworkPrototype.js | 16 - jsdoc-toolkit/app/plugins/functionCall.js | 10 - jsdoc-toolkit/app/plugins/publishSrcHilite.js | 62 - jsdoc-toolkit/app/plugins/symbolLink.js | 10 - jsdoc-toolkit/app/plugins/tagParamConfig.js | 31 - jsdoc-toolkit/app/plugins/tagSynonyms.js | 43 - jsdoc-toolkit/app/run.js | 348 - jsdoc-toolkit/app/t/TestDoc.js | 144 - jsdoc-toolkit/app/t/runner.js | 13 - jsdoc-toolkit/app/test.js | 342 - jsdoc-toolkit/app/test/addon.js | 24 - jsdoc-toolkit/app/test/anon_inner.js | 14 - jsdoc-toolkit/app/test/augments.js | 31 - jsdoc-toolkit/app/test/augments2.js | 26 - jsdoc-toolkit/app/test/borrows.js | 46 - jsdoc-toolkit/app/test/borrows2.js | 23 - jsdoc-toolkit/app/test/config.js | 22 - jsdoc-toolkit/app/test/constructs.js | 18 - jsdoc-toolkit/app/test/encoding.js | 10 - jsdoc-toolkit/app/test/encoding_other.js | 12 - jsdoc-toolkit/app/test/event.js | 54 - jsdoc-toolkit/app/test/exports.js | 14 - jsdoc-toolkit/app/test/functions_anon.js | 39 - jsdoc-toolkit/app/test/functions_nested.js | 33 - jsdoc-toolkit/app/test/global.js | 13 - jsdoc-toolkit/app/test/globals.js | 25 - jsdoc-toolkit/app/test/ignore.js | 10 - jsdoc-toolkit/app/test/inner.js | 16 - jsdoc-toolkit/app/test/jsdoc_test.js | 477 - jsdoc-toolkit/app/test/lend.js | 33 - jsdoc-toolkit/app/test/memberof.js | 19 - jsdoc-toolkit/app/test/memberof2.js | 38 - jsdoc-toolkit/app/test/memberof3.js | 33 - .../app/test/memberof_constructor.js | 17 - jsdoc-toolkit/app/test/module.js | 17 - jsdoc-toolkit/app/test/multi_methods.js | 25 - jsdoc-toolkit/app/test/name.js | 19 - jsdoc-toolkit/app/test/namespace_nested.js | 23 - jsdoc-toolkit/app/test/nocode.js | 13 - jsdoc-toolkit/app/test/oblit_anon.js | 20 - jsdoc-toolkit/app/test/overview.js | 20 - jsdoc-toolkit/app/test/param_inline.js | 37 - jsdoc-toolkit/app/test/params_optional.js | 8 - jsdoc-toolkit/app/test/prototype.js | 17 - jsdoc-toolkit/app/test/prototype_nested.js | 9 - jsdoc-toolkit/app/test/prototype_oblit.js | 13 - .../app/test/prototype_oblit_constructor.js | 24 - jsdoc-toolkit/app/test/public.js | 10 - jsdoc-toolkit/app/test/scripts/code.js | 5 - jsdoc-toolkit/app/test/scripts/notcode.txt | 5 - jsdoc-toolkit/app/test/shared.js | 42 - jsdoc-toolkit/app/test/shared2.js | 2 - jsdoc-toolkit/app/test/shortcuts.js | 22 - jsdoc-toolkit/app/test/static_this.js | 13 - jsdoc-toolkit/app/test/synonyms.js | 31 - jsdoc-toolkit/app/test/tosource.js | 23 - jsdoc-toolkit/app/test/variable_redefine.js | 14 - jsdoc-toolkit/changes.txt | 124 - jsdoc-toolkit/conf/sample.conf | 31 - jsdoc-toolkit/generate_iris_doc.bat | 1 - jsdoc-toolkit/java/build.xml | 36 - jsdoc-toolkit/java/build_1.4.xml | 36 - jsdoc-toolkit/java/classes/js.jar | Bin 819369 -> 0 bytes jsdoc-toolkit/java/src/JsDebugRun.java | 21 - jsdoc-toolkit/java/src/JsRun.java | 21 - jsdoc-toolkit/jsdebug.jar | Bin 1307 -> 0 bytes jsdoc-toolkit/jsrun.jar | Bin 1303 -> 0 bytes jsdoc-toolkit/jsrun.sh | 52 - .../templates/codeview-igz/README.txt | 5 - .../templates/codeview-igz/allclasses.tmpl | 20 - .../templates/codeview-igz/allfiles.tmpl | 41 - .../templates/codeview-igz/class.tmpl | 712 -- .../templates/codeview-igz/css/all.css | 358 - .../css/fonts/mplus-1m-bold-webfont.eot | Bin 18590 -> 0 bytes .../css/fonts/mplus-1m-bold-webfont.svg | 134 - .../css/fonts/mplus-1m-bold-webfont.ttf | Bin 18428 -> 0 bytes .../css/fonts/mplus-1m-bold-webfont.woff | Bin 11772 -> 0 bytes .../css/fonts/mplus-1m-regular-webfont.eot | Bin 19518 -> 0 bytes .../css/fonts/mplus-1m-regular-webfont.svg | 134 - .../css/fonts/mplus-1m-regular-webfont.ttf | Bin 19344 -> 0 bytes .../css/fonts/mplus-1m-regular-webfont.woff | Bin 12304 -> 0 bytes .../templates/codeview-igz/css/handheld.css | 217 - .../templates/codeview-igz/css/prettify.css | 1 - .../templates/codeview-igz/css/screen.css | 297 - .../templates/codeview-igz/javascript/all.js | 326 - .../codeview-igz/javascript/html5.js | 6 - .../codeview-igz/javascript/prettify.js | 29 - .../templates/codeview-igz/license.txt | 21 - .../templates/codeview-igz/publish.js | 238 - .../codeview-igz/subtemplates/foot.tmpl | 6 - .../codeview-igz/subtemplates/head.tmpl | 30 - .../codeview-igz/subtemplates/menu.tmpl | 41 - libs/jquery-loader.js | 14 + libs/jquery/jquery.js | 9404 +++++++++++++++++ libs/qunit/qunit.css | 232 + libs/qunit/qunit.js | 1659 +++ package.json | 13 + .../webapp/js/iris-0.4.5.js => src/iris.js | 4178 ++++---- test/iris.html | 31 + test/iris_test.js | 98 + 233 files changed, 15795 insertions(+), 25021 deletions(-) create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE-New-BSD delete mode 100644 changelog.txt rename js/iris-0.4.5.js => dist/iris.js (91%) create mode 100644 dist/iris.min.js create mode 100644 grunt.js delete mode 100644 iris-example/pom.xml delete mode 100644 iris-example/src/main/webapp/WEB-INF/web.xml delete mode 100644 iris-example/src/main/webapp/css/example.css delete mode 100644 iris-example/src/main/webapp/example/addon/radios.js delete mode 100644 iris-example/src/main/webapp/example/addon/validator.js delete mode 100644 iris-example/src/main/webapp/example/init.js delete mode 100644 iris-example/src/main/webapp/example/screen/example_addon_radios.html delete mode 100644 iris-example/src/main/webapp/example/screen/example_addon_radios.js delete mode 100644 iris-example/src/main/webapp/example/screen/example_addon_validation.html delete mode 100644 iris-example/src/main/webapp/example/screen/example_addon_validation.js delete mode 100644 iris-example/src/main/webapp/example/screen/example_destroy.html delete mode 100644 iris-example/src/main/webapp/example/screen/example_destroy.js delete mode 100644 iris-example/src/main/webapp/example/screen/example_destroy_all.html delete mode 100644 iris-example/src/main/webapp/example/screen/example_destroy_all.js delete mode 100644 iris-example/src/main/webapp/example/screen/example_instance.html delete mode 100644 iris-example/src/main/webapp/example/screen/example_instance.js delete mode 100644 iris-example/src/main/webapp/example/screen/example_list.html delete mode 100644 iris-example/src/main/webapp/example/screen/example_list.js delete mode 100644 iris-example/src/main/webapp/example/screen/example_nested_uis.html delete mode 100644 iris-example/src/main/webapp/example/screen/example_nested_uis.js delete mode 100644 iris-example/src/main/webapp/example/screen/example_screen_params.html delete mode 100644 iris-example/src/main/webapp/example/screen/example_screen_params.js delete mode 100644 iris-example/src/main/webapp/example/screen/example_screen_params_child.html delete mode 100644 iris-example/src/main/webapp/example/screen/example_screen_params_child.js delete mode 100644 iris-example/src/main/webapp/example/screen/example_template_params.html delete mode 100644 iris-example/src/main/webapp/example/screen/example_template_params.js delete mode 100644 iris-example/src/main/webapp/example/screen/main.html delete mode 100644 iris-example/src/main/webapp/example/screen/main.js delete mode 100644 iris-example/src/main/webapp/example/ui/button.html delete mode 100644 iris-example/src/main/webapp/example/ui/button.js delete mode 100644 iris-example/src/main/webapp/example/ui/example.html delete mode 100644 iris-example/src/main/webapp/example/ui/example.js delete mode 100644 iris-example/src/main/webapp/example/ui/example_basic.html delete mode 100644 iris-example/src/main/webapp/example/ui/example_basic.js delete mode 100644 iris-example/src/main/webapp/example/ui/nested.html delete mode 100644 iris-example/src/main/webapp/example/ui/nested.js delete mode 100644 iris-example/src/main/webapp/index.html delete mode 100644 iris-example/src/main/webapp/js/iris-0.4.0.min.js delete mode 100644 iris-example/src/main/webapp/js/iris-0.4.2.min.js delete mode 100644 iris-example/src/main/webapp/js/iris-0.4.3.min.js delete mode 100644 iris-example/src/main/webapp/js/iris-0.4.4.min.js delete mode 100644 iris-example/src/main/webapp/js/iris-0.4.5.min.js delete mode 100644 iris-example/src/main/webapp/js/iris.js delete mode 100644 iris-example/src/main/webapp/js/jquery-1.5.1.min.js delete mode 100644 iris-example/src/main/webapp/js/jquery-1.5.2.min.js delete mode 100644 iris-example/src/main/webapp/js/jquery-1.5.min.js delete mode 100644 iris-example/src/main/webapp/js/jquery-1.6.1.min.js delete mode 100644 iris-example/src/main/webapp/js/jquery-1.6.2.min.js delete mode 100644 iris-example/src/main/webapp/js/jquery-1.6.3.min.js delete mode 100644 iris-example/src/main/webapp/js/jquery-1.6.4.min.js delete mode 100644 iris-example/src/main/webapp/js/jquery-1.6.min.js delete mode 100644 iris-example/src/main/webapp/js/jquery-1.7.1.min.js delete mode 100644 iris-example/src/main/webapp/js/jquery-1.7.min.js delete mode 100644 iris-example/src/main/webapp/js/jquery-1.8.0.min.js delete mode 100644 iris-example/src/main/webapp/js/jquery-1.8.2.min.js delete mode 100644 iris-example/src/main/webapp/js/zepto.min.js delete mode 100644 iris-example/src/main/webapp/lang/en-us.js delete mode 100644 iris-example/src/main/webapp/lang/es-es.js delete mode 100644 iris-example/src/main/webapp/library.html delete mode 100644 iris-example/src/main/webapp/library/boot.js delete mode 100644 iris-example/src/main/webapp/library/screen/author_details.html delete mode 100644 iris-example/src/main/webapp/library/screen/author_details.js delete mode 100644 iris-example/src/main/webapp/library/screen/author_edit.html delete mode 100644 iris-example/src/main/webapp/library/screen/author_edit.js delete mode 100644 iris-example/src/main/webapp/library/screen/authors.html delete mode 100644 iris-example/src/main/webapp/library/screen/authors.js delete mode 100644 iris-example/src/main/webapp/library/screen/book_details.html delete mode 100644 iris-example/src/main/webapp/library/screen/book_details.js delete mode 100644 iris-example/src/main/webapp/library/screen/book_edit.html delete mode 100644 iris-example/src/main/webapp/library/screen/book_edit.js delete mode 100644 iris-example/src/main/webapp/library/screen/books.html delete mode 100644 iris-example/src/main/webapp/library/screen/books.js delete mode 100644 iris-example/src/main/webapp/library/screen/main.html delete mode 100644 iris-example/src/main/webapp/library/screen/main.js delete mode 100644 iris-example/src/main/webapp/memory-leak-test/memoryleak.js delete mode 100644 iris-example/src/main/webapp/memory-leak-test/screen/main.html delete mode 100644 iris-example/src/main/webapp/memory-leak-test/screen/main.js delete mode 100644 iris-example/src/main/webapp/memoryleak.html delete mode 100644 iris-example/src/main/webapp/memoryleak_prototype.html delete mode 100644 iris-example/src/main/webapp/memoryleak_zepto.html delete mode 100644 iris-example/src/main/webapp/pix/checkbox.png create mode 100644 iris.jquery.json delete mode 100644 js/iris-0.4.2.js delete mode 100644 js/iris-0.4.2.min.js delete mode 100644 js/iris-0.4.3.js delete mode 100644 js/iris-0.4.3.min.info delete mode 100644 js/iris-0.4.3.min.js delete mode 100644 js/iris-0.4.4.js delete mode 100644 js/iris-0.4.4.min.info delete mode 100644 js/iris-0.4.4.min.js delete mode 100644 js/iris-0.4.5.min.info delete mode 100644 js/iris-0.4.5.min.js delete mode 100644 jsdoc-toolkit/README.txt delete mode 100644 jsdoc-toolkit/app/frame.js delete mode 100644 jsdoc-toolkit/app/frame/Chain.js delete mode 100644 jsdoc-toolkit/app/frame/Dumper.js delete mode 100644 jsdoc-toolkit/app/frame/Hash.js delete mode 100644 jsdoc-toolkit/app/frame/Link.js delete mode 100644 jsdoc-toolkit/app/frame/Namespace.js delete mode 100644 jsdoc-toolkit/app/frame/Opt.js delete mode 100644 jsdoc-toolkit/app/frame/Reflection.js delete mode 100644 jsdoc-toolkit/app/frame/String.js delete mode 100644 jsdoc-toolkit/app/frame/Testrun.js delete mode 100644 jsdoc-toolkit/app/handlers/FOODOC.js delete mode 100644 jsdoc-toolkit/app/handlers/XMLDOC.js delete mode 100644 jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js delete mode 100644 jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js delete mode 100644 jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js delete mode 100644 jsdoc-toolkit/app/lib/JSDOC.js delete mode 100644 jsdoc-toolkit/app/lib/JSDOC/DocComment.js delete mode 100644 jsdoc-toolkit/app/lib/JSDOC/DocTag.js delete mode 100644 jsdoc-toolkit/app/lib/JSDOC/JsDoc.js delete mode 100644 jsdoc-toolkit/app/lib/JSDOC/JsPlate.js delete mode 100644 jsdoc-toolkit/app/lib/JSDOC/Lang.js delete mode 100644 jsdoc-toolkit/app/lib/JSDOC/Parser.js delete mode 100644 jsdoc-toolkit/app/lib/JSDOC/PluginManager.js delete mode 100644 jsdoc-toolkit/app/lib/JSDOC/Symbol.js delete mode 100644 jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js delete mode 100644 jsdoc-toolkit/app/lib/JSDOC/TextStream.js delete mode 100644 jsdoc-toolkit/app/lib/JSDOC/Token.js delete mode 100644 jsdoc-toolkit/app/lib/JSDOC/TokenReader.js delete mode 100644 jsdoc-toolkit/app/lib/JSDOC/TokenStream.js delete mode 100644 jsdoc-toolkit/app/lib/JSDOC/Util.js delete mode 100644 jsdoc-toolkit/app/lib/JSDOC/Walker.js delete mode 100644 jsdoc-toolkit/app/main.js delete mode 100644 jsdoc-toolkit/app/plugins/commentSrcJson.js delete mode 100644 jsdoc-toolkit/app/plugins/frameworkPrototype.js delete mode 100644 jsdoc-toolkit/app/plugins/functionCall.js delete mode 100644 jsdoc-toolkit/app/plugins/publishSrcHilite.js delete mode 100644 jsdoc-toolkit/app/plugins/symbolLink.js delete mode 100644 jsdoc-toolkit/app/plugins/tagParamConfig.js delete mode 100644 jsdoc-toolkit/app/plugins/tagSynonyms.js delete mode 100644 jsdoc-toolkit/app/run.js delete mode 100644 jsdoc-toolkit/app/t/TestDoc.js delete mode 100644 jsdoc-toolkit/app/t/runner.js delete mode 100644 jsdoc-toolkit/app/test.js delete mode 100644 jsdoc-toolkit/app/test/addon.js delete mode 100644 jsdoc-toolkit/app/test/anon_inner.js delete mode 100644 jsdoc-toolkit/app/test/augments.js delete mode 100644 jsdoc-toolkit/app/test/augments2.js delete mode 100644 jsdoc-toolkit/app/test/borrows.js delete mode 100644 jsdoc-toolkit/app/test/borrows2.js delete mode 100644 jsdoc-toolkit/app/test/config.js delete mode 100644 jsdoc-toolkit/app/test/constructs.js delete mode 100644 jsdoc-toolkit/app/test/encoding.js delete mode 100644 jsdoc-toolkit/app/test/encoding_other.js delete mode 100644 jsdoc-toolkit/app/test/event.js delete mode 100644 jsdoc-toolkit/app/test/exports.js delete mode 100644 jsdoc-toolkit/app/test/functions_anon.js delete mode 100644 jsdoc-toolkit/app/test/functions_nested.js delete mode 100644 jsdoc-toolkit/app/test/global.js delete mode 100644 jsdoc-toolkit/app/test/globals.js delete mode 100644 jsdoc-toolkit/app/test/ignore.js delete mode 100644 jsdoc-toolkit/app/test/inner.js delete mode 100644 jsdoc-toolkit/app/test/jsdoc_test.js delete mode 100644 jsdoc-toolkit/app/test/lend.js delete mode 100644 jsdoc-toolkit/app/test/memberof.js delete mode 100644 jsdoc-toolkit/app/test/memberof2.js delete mode 100644 jsdoc-toolkit/app/test/memberof3.js delete mode 100644 jsdoc-toolkit/app/test/memberof_constructor.js delete mode 100644 jsdoc-toolkit/app/test/module.js delete mode 100644 jsdoc-toolkit/app/test/multi_methods.js delete mode 100644 jsdoc-toolkit/app/test/name.js delete mode 100644 jsdoc-toolkit/app/test/namespace_nested.js delete mode 100644 jsdoc-toolkit/app/test/nocode.js delete mode 100644 jsdoc-toolkit/app/test/oblit_anon.js delete mode 100644 jsdoc-toolkit/app/test/overview.js delete mode 100644 jsdoc-toolkit/app/test/param_inline.js delete mode 100644 jsdoc-toolkit/app/test/params_optional.js delete mode 100644 jsdoc-toolkit/app/test/prototype.js delete mode 100644 jsdoc-toolkit/app/test/prototype_nested.js delete mode 100644 jsdoc-toolkit/app/test/prototype_oblit.js delete mode 100644 jsdoc-toolkit/app/test/prototype_oblit_constructor.js delete mode 100644 jsdoc-toolkit/app/test/public.js delete mode 100644 jsdoc-toolkit/app/test/scripts/code.js delete mode 100644 jsdoc-toolkit/app/test/scripts/notcode.txt delete mode 100644 jsdoc-toolkit/app/test/shared.js delete mode 100644 jsdoc-toolkit/app/test/shared2.js delete mode 100644 jsdoc-toolkit/app/test/shortcuts.js delete mode 100644 jsdoc-toolkit/app/test/static_this.js delete mode 100644 jsdoc-toolkit/app/test/synonyms.js delete mode 100644 jsdoc-toolkit/app/test/tosource.js delete mode 100644 jsdoc-toolkit/app/test/variable_redefine.js delete mode 100644 jsdoc-toolkit/changes.txt delete mode 100644 jsdoc-toolkit/conf/sample.conf delete mode 100644 jsdoc-toolkit/generate_iris_doc.bat delete mode 100644 jsdoc-toolkit/java/build.xml delete mode 100644 jsdoc-toolkit/java/build_1.4.xml delete mode 100644 jsdoc-toolkit/java/classes/js.jar delete mode 100644 jsdoc-toolkit/java/src/JsDebugRun.java delete mode 100644 jsdoc-toolkit/java/src/JsRun.java delete mode 100644 jsdoc-toolkit/jsdebug.jar delete mode 100644 jsdoc-toolkit/jsrun.jar delete mode 100644 jsdoc-toolkit/jsrun.sh delete mode 100644 jsdoc-toolkit/templates/codeview-igz/README.txt delete mode 100644 jsdoc-toolkit/templates/codeview-igz/allclasses.tmpl delete mode 100644 jsdoc-toolkit/templates/codeview-igz/allfiles.tmpl delete mode 100644 jsdoc-toolkit/templates/codeview-igz/class.tmpl delete mode 100644 jsdoc-toolkit/templates/codeview-igz/css/all.css delete mode 100644 jsdoc-toolkit/templates/codeview-igz/css/fonts/mplus-1m-bold-webfont.eot delete mode 100644 jsdoc-toolkit/templates/codeview-igz/css/fonts/mplus-1m-bold-webfont.svg delete mode 100644 jsdoc-toolkit/templates/codeview-igz/css/fonts/mplus-1m-bold-webfont.ttf delete mode 100644 jsdoc-toolkit/templates/codeview-igz/css/fonts/mplus-1m-bold-webfont.woff delete mode 100644 jsdoc-toolkit/templates/codeview-igz/css/fonts/mplus-1m-regular-webfont.eot delete mode 100644 jsdoc-toolkit/templates/codeview-igz/css/fonts/mplus-1m-regular-webfont.svg delete mode 100644 jsdoc-toolkit/templates/codeview-igz/css/fonts/mplus-1m-regular-webfont.ttf delete mode 100644 jsdoc-toolkit/templates/codeview-igz/css/fonts/mplus-1m-regular-webfont.woff delete mode 100644 jsdoc-toolkit/templates/codeview-igz/css/handheld.css delete mode 100644 jsdoc-toolkit/templates/codeview-igz/css/prettify.css delete mode 100644 jsdoc-toolkit/templates/codeview-igz/css/screen.css delete mode 100644 jsdoc-toolkit/templates/codeview-igz/javascript/all.js delete mode 100644 jsdoc-toolkit/templates/codeview-igz/javascript/html5.js delete mode 100644 jsdoc-toolkit/templates/codeview-igz/javascript/prettify.js delete mode 100644 jsdoc-toolkit/templates/codeview-igz/license.txt delete mode 100644 jsdoc-toolkit/templates/codeview-igz/publish.js delete mode 100644 jsdoc-toolkit/templates/codeview-igz/subtemplates/foot.tmpl delete mode 100644 jsdoc-toolkit/templates/codeview-igz/subtemplates/head.tmpl delete mode 100644 jsdoc-toolkit/templates/codeview-igz/subtemplates/menu.tmpl create mode 100644 libs/jquery-loader.js create mode 100644 libs/jquery/jquery.js create mode 100644 libs/qunit/qunit.css create mode 100644 libs/qunit/qunit.js create mode 100644 package.json rename iris-example/src/main/webapp/js/iris-0.4.5.js => src/iris.js (91%) create mode 100644 test/iris.html create mode 100644 test/iris_test.js diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..94af472 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,35 @@ +# Contributing + +## Important notes +Please don't edit files in the `dist` subdirectory as they are generated via grunt. You'll find source code in the `src` subdirectory! + +### Code style +Regarding code style like indentation and whitespace, **follow the conventions you see used in the source already.** + +### PhantomJS +While grunt can run the included unit tests via [PhantomJS](http://phantomjs.org/), this shouldn't be considered a substitute for the real thing. Please be sure to test the `test/*.html` unit test file(s) in _actual_ browsers. + +See the [Why does grunt complain that PhantomJS isn't installed?](https://github.com/gruntjs/grunt/blob/master/docs/faq.md#why-does-grunt-complain-that-phantomjs-isnt-installed) guide in the [Grunt FAQ](https://github.com/gruntjs/grunt/blob/master/docs/faq.md) for help with installing or troubleshooting PhantomJS. + +## Modifying the code +First, ensure that you have the latest [Node.js](http://nodejs.org/) and [npm](http://npmjs.org/) installed. + +Test that grunt is installed globally by running `grunt --version` at the command-line. If grunt isn't installed globally, run `npm install -g grunt` to install the latest version. _You may need to run `sudo npm install -g grunt`._ + +_Note that in Windows, you may have to run `grunt.cmd` instead of `grunt`._ + +1. Fork and clone the repo. +1. Run `npm install` to install all dependencies (including grunt). +1. Run `grunt` to grunt this project. + +Assuming that you don't see any red, you're ready to go. Just be sure to run `grunt` after making any changes, to ensure that nothing is broken. + +## Submitting pull requests + +1. Create a new branch, please don't work in your `master` branch directly. +1. Add failing tests for the change you want to make. Run `grunt` to see the tests fail. +1. Fix stuff. +1. Run `grunt` to see if the tests pass. Repeat steps 2-4 until done. +1. Open `test/*.html` unit test file(s) in actual browser to ensure tests pass everywhere. +1. Update the documentation to reflect any changes. +1. Push to your fork and submit a pull request. diff --git a/LICENSE-New-BSD b/LICENSE-New-BSD new file mode 100644 index 0000000..9db35db --- /dev/null +++ b/LICENSE-New-BSD @@ -0,0 +1,25 @@ +New BSD License + +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. + 3. Neither the name of copyright holders nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"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 COPYRIGHT HOLDERS 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. diff --git a/README.md b/README.md index 5095af3..42e273b 100644 --- a/README.md +++ b/README.md @@ -1,43 +1,30 @@ # Iris -Iris is not only another framework. - -Iris provides different client-side optimization techniques for front construction. It is independent and compatible with any server-side technology: JAVA, PHP, Python, GOOGLE APP ENGINE, .NET... -Iris is not only another framework. It is a methodology that will help you to build structured and organized Web applications: - -* Strong object oriented coding and file system organization -* Presenter-View-Resource pattern -* Easy and fast templating engine -* Load resources on demand and self-controlled dependencies -* One page navigation using Hash-URL -* 100% Client multilanguage support -* Crossbrowser: Chrome, Firefox e Internet Explorer -* Light and fast: 14 KB -* Open source: New BSD License - - -## API -http://intelygenz.github.com/iris/api/v0.4.5/ +This JavaScript library provides different client-side optimization techniques for front construction. ## Getting Started -https://github.com/intelygenz/iris/wiki/Getting-Started - -## Cookbook -https://github.com/intelygenz/iris/wiki/Cookbook +Download the [production version][min] or the [development version][max]. -## Iris Life Cycle -https://github.com/intelygenz/iris/wiki/Iris-Life-Cycle +[min]: https://raw.github.com/iris-js/iris/master/dist/iris.min.js +[max]: https://raw.github.com/iris-js/iris/master/dist/iris.js -## Examples -https://github.com/intelygenz/iris/wiki/Examples - -## Installation - -Download the lastest version from http://intelygenz.github.com/iris/ +In your web page: ```html - + + + ``` -Iris requires *JQuery 1.5+*: -http://jquery.com/ +## Documentation +_(Coming soon)_ + +## Examples +_(Coming soon)_ + +## Release History +_(Nothing yet)_ diff --git a/changelog.txt b/changelog.txt deleted file mode 100644 index d57ae73..0000000 --- a/changelog.txt +++ /dev/null @@ -1,79 +0,0 @@ -Copyright (c) 2012 Intelygenz - All rights reserved. - - New BSD License - - 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. - 3. Neither the name of copyright holders nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "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 COPYRIGHT HOLDERS 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. - - Creation date: 2012-01-12 - - [version] date -> authors - upd|fix|new|dep|rmv - description - - [0.4.5] 2012-11-03 david.garcia@intelygenz.com, angel.sanchez@intelygenz.com - [fix] Prevent multiple calls to hashchange event handler when welcome screen calls to iris.Goto() on create phase - [upd] Code refactoring to suppress JS validation warnings. All JSHint validations whitout strict mode are passed. (http://www.jshint.com/) - [fix] DateFormat bug with month names (https://github.com/intelygenz/iris/issues/22) - [new] iris.net.CacheVersion (https://github.com/intelygenz/iris/issues/23) - [upd] self.$Get() selectors cache: improved performance & permit nested UIs - - [0.4.4] 2012-09-27 - [new] Screen error messages when template is not set (https://github.com/intelygenz/iris/issues/19) - [new] Prepend UI (https://github.com/intelygenz/iris/issues/21) - [rmv] Remove currency symbol of number regional format - [upd] self.Settings returns complete __Settings__ if don't use any parameter - [fix] Fix asynchronous load components on Firefox when hashchange event is triggered - [fix] Screen parameter bugs (https://github.com/intelygenz/iris/issues/9) - - [0.4.3] 2012-09-06 -> angel.sanchez@intelygenz.com - [fix] Screen Context Bug (https://github.com/intelygenz/iris/issues/10) - [fix] Load Multiple Locales Bug (https://github.com/intelygenz/iris/issues/15) - [new] Nested properties value in Templates (https://github.com/intelygenz/iris/issues/8) - [upd] More Descriptive Error Messages (https://github.com/intelygenz/iris/issues/12) - [new] Specify new Regional configuration (https://github.com/intelygenz/iris/issues/17) - [doc] Add Screen Paramaters Example (https://github.com/intelygenz/iris/issues/11) - - [0.4.2] 2012-09-04 -> alejandro.gonzalez@intelygenz.com, angel.sanchez@intelygenz.com - [upd] _LocaleParse -> Now can finds variables with dot notation, eg: @@COMMON.HELLO@@. This mean that you can have nested objects in lang json files. - [new] iris.AddOn, iris.ApplyAddOn -> Now you can define groups of UIs and extends a UI functionality - [new] screen.CanSleep -> All screens can define a CanSleep public method that returns a boolean indicating when the screen can be leaved or not. - If only one screen can't sleep, sleep action is cancelled. - [upd] iris.InstanceUI -> Now displays in console when data-id is not unique. - [new] self.DestroyUI() -> Remove a UI from the DOM tree and all its references. - [new] self.DestroyAllUIs() -> Remove all UIs from a container. - [new] self.Destroy() -> new Lifecycle function is called when a UI is destroyed. - [new] self.$Get() -> shows error message when element isn't found - [new] iris.screen.Destroy() -> Remove a created screen completely - [rmv] iris.screen.Add() -> Now you can use self.AddScreen() - [new] _AbstractScreen.AddScreen() -> Screens only can be registered inside of screens - [new] iris.screen.WelcomeScreen() -> Now the applications must implement this entry point - [rmv] The last parameter of self.InstanceUI(p_id,p_js,p_settings,p_$tmpl) -> you can't instance UI outside its own templates - [rmv] The last parameter of self.$Get(p_id,p_$tmpl) -> you can't get elements outside its own templates - [fix] Small code refactoring and fixed bugs. - [new] Tested with JQuery 1.8 - [doc] Documentation completed. - - [0.4.0] 2012-07-18 -> angel.sanchez@intelygenz.com, alejandro.gonzalez@intelygenz.com - Previous project: http://code.google.com/p/iris-js/ - WARNING: No backward with previous versions \ No newline at end of file diff --git a/js/iris-0.4.5.js b/dist/iris.js similarity index 91% rename from js/iris-0.4.5.js rename to dist/iris.js index 24d4451..876280e 100644 --- a/js/iris-0.4.5.js +++ b/dist/iris.js @@ -1,2090 +1,2084 @@ -/* - * Copyright (c) 2012 Intelygenz - * All rights reserved. - * - * New BSD License - * - * 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. - * 3. Neither the name of copyright holders nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "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 COPYRIGHT HOLDERS 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. - */ - -/** - * @version 0.4.5 - * - * @namespace - * This JavaScript library provides different client-side optimization techniques for front construction. - * It is independent and compatible with any server-side technology: JAVA, PHP, Python, GOOGLE APP ENGINE, .NET... - * - * */ -var iris = {}; - -(function () { - - var _CacheVersion, - _JQ_MIN_VER = 1.5, - _Env = null, - _Log = {"error":true}, - _LogPrefix = "", - _Screen = {}, - _ScreenUrl = {}, - _ScreenContainer = {}, - _LastScreen = {}, - _PrevHashUrl = "", - _Global = {}, - _Local = {}, - _Locale = null, - _Config = {}, - _Lang = {}, - _Event = {}, - _Includes = {}, - _AddOns = {}, - _AppBaseUri = "", - _LastIncludePath, - _Head = $("head").get(0), - _Cache = true, - _HasConsole, - _GotoCancelled = false, - _WelcomeScreenCreated = false - ; - - function _Init () { - - // CHECK JQ DEPENDENCY - if( typeof jQuery === "undefined" ) { - _E( "jQuery " + _JQ_MIN_VER + "+ previous load required" ); - } - else if ( $().jquery < _JQ_MIN_VER ) { - _E( "jQuery " + $().jquery + " currently loaded, jQuery " + _JQ_MIN_VER + "+ required" ); - } - - // CHECK CONSOLE SUPPORT - _HasConsole = (window.console && window.console.debug && window.console.warn && window.console.error); - if ( !_HasConsole && window.console && window.console.log ) { - window.console.log("advanced console debugging is not supported in this browser"); - } - } - - - function _LogOf (p_type) { - return _Log[p_type]; - } - - function _L(){ - if ( _HasConsole && window.console.log) { - window.console.log(_LogPrefix, arguments); - } - } - - function _D(){ - if(_HasConsole && _LogOf("debug") ){ - window.console.debug(_LogPrefix, arguments); - } - } - - function _W(){ - if(_HasConsole && _LogOf("warning") ){ - window.console.warn(_LogPrefix, arguments); - } - } - - function _E(){ - if(_HasConsole && _LogOf("error") ){ - window.console.error(_LogPrefix, arguments); - } - } - - - - function _Goto (p_hashUri) { - _PrevHashUrl = document.location.hash; - document.location.hash = p_hashUri; // Trigger hashchange event, then execute _Window_OnHashChange() - } - - function _Window_OnHashChange () { - - if ( !_WelcomeScreenCreated ) { - iris.E("You must set the welcome screen using iris.screen.WelcomeScreen()"); - return false; - } - - iris.event.Notify(iris.event.BEFORE_NAVIGATION); - - if ( _GotoCancelled ) { - _GotoCancelled = false; - return false; - } - - var prev = _PrevHashUrl.split("/"), - curr = document.location.hash.split("/"), - prevPath = "", - currPath = "", - pathWithoutParams, - hasRemainingChilds = false, - i - ; - - // Check if all screen.canSleep() are true - if ( _PrevHashUrl !== "" ) { - for ( i=0; i curr.length ) { - - for ( i=0; i 0 ? base[0].attributes.href.value : "/"; - _AppBaseUri = document.location.protocol + "//" + document.location.host + base; - } - return _AppBaseUri; - } - - function _Ajax (p_settings) { - return $.ajax(p_settings); - } - - function _AjaxSync (p_uri, p_dataType, f_success, f_error) { - var ajaxSettings = { - url: p_uri, - dataType: p_dataType, - async: false, - cache: _Cache, - success : f_success, - error : f_error - }; - - if ( _Cache && _CacheVersion !== undefined ) { - ajaxSettings.data = "_=" + _CacheVersion; - } - - $.ajax(ajaxSettings); - } - - function _SetCacheVersion (p_value) { - _CacheVersion = p_value; - } - - - function _IncludeFiles () { - for ( var f=0,F=arguments.length; f -1 ) { - var link = document.createElement('link'); - link.rel = 'stylesheet'; - link.type = 'text/css'; - link.href = fileUrl; - _Head.appendChild(link); - } - else { - var isHtml = p_uiFile.lastIndexOf(".html") > -1; - _AjaxSync( - fileUrl, - (isHtml ? "html" : "text"), - function (p_data) { - _LastIncludePath = p_uiFile; - - if ( isHtml ) { - _Includes[p_uiFile] = _LocaleParse(p_data); - } - else { - var script = document.createElement("script"); - script.language = "javascript"; - script.type = "text/javascript"; - script.text = p_data; - _Head.appendChild(script); - } - - }, - function (p_err) { - delete _Includes[fileUrl]; - _E(p_err.status, "Error loading file '" + fileUrl + "'"); - } - ); - } - } - } - - - function _ConfigLoad (p_json){ - if ( p_json ) { - $.extend(_Config, p_json); - - _GlobalLoad( _Config.global ); - - var currentEnv = _GetEnv(); - if ( _Config.log ) { - var logConfig = _Config.log[currentEnv]; - var logs = logConfig.split(","); - for ( var i=0; i < logs.length; i++ ) { - _Log[ $.trim(logs[i]) ] = true; - } - } - - _Cache = true; - if ( _Config.hasOwnProperty("environments-nocache") ) { - var envNocache = _Config["environments-nocache"].split(","); - for ( var f=0, F=envNocache.length; f -1 ) { - _Env = _Config.environment[p]; - break; - } - } - if ( !_Env ) { - _Env = "pro"; - } - _LogPrefix = "[" + _Env + "]"; - } - return _Env; - } - } - - function _GlobalLoad(p_hash){ - $.extend(_Global, p_hash); - return _Global; - } - - function _GlobalData (p_label, p_value){ - if ( p_label && p_value !== undefined ) { - _Global[p_label] = p_value; - } - else if ( p_label ) { - return _Global[p_label]; - } - else { - return _Global; - } - } - - function _LocalLoad(p_hash){ - $.extend(_Local, p_hash); - return _Local; - } - - function _LocalData(p_label, p_value){ - if ( p_label && p_value !== undefined ) { - _Local[p_label][_GetEnv()] = p_value; - } - else if ( p_label ) { - return _Local[p_label][_GetEnv()]; - } - else { - return _Local; - } - } - - - // - // EVENT - // - function _FindEvent(p_eventName, f_func){ - var events = _Event[p_eventName]; - if ( events ) { - for ( var f=0, F=events.length; f -1 ){ - var labels = p_label.split("."); - var f,F=labels.length; - for(f=0; f= 0) ? settings.formatPos : settings.formatNeg; - - var decimal = val % 1; - var num = String( Math.abs(val-decimal) ); - - decimal = String(Math.abs(decimal).toFixed(settings.precision)); - decimal = decimal.substr(2); - - for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) { - num = num.substring(0, num.length - (4 * i + 3)) + settings.thousand + num.substring(num.length - (4 * i + 3)); - } - - return format.replace("n", num + settings.decimal + decimal ); - } - - function _DateFormat (p_date, p_format) { - if ( !p_format ) { - p_format = _GetRegionalSetting("dateFormat"); - } - - if ( typeof p_date !== "object" ) { - p_date = new Date(Number(p_date)); - } - - var dateFormat = ""; - for (var f=0, F=p_format.length; f 12) ? "p.m." : "a.m."; - case "A": - return (p_date.getHours() > 12) ? "PM" : "AM"; - case "U": - return Math.floor(p_date.getTime() * 0.001); - default: - return p_formatChar; - } - } - - var _Regional = { - "en-US" : { - dayNames : ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"], - monthNames : ["January","February","March","April","May","June","July","August","September","October","November","December"], - dateFormat : "m/d/Y h:i:s", - currency : { - formatPos : "n", - formatNeg : "(n)", - decimal : ".", - thousand : ",", - precision : 2 - } - }, - "es-ES" : { - dayNames : ["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"], - monthNames : ["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"], - dateFormat : "d/m/Y H:i:s", - currency : { - formatPos : "n", - formatNeg : "-n", - decimal : ",", - thousand : ".", - precision : 2 - } - } - }; - - function _AddRegional (p_locale, p_regional) { - if ( !p_regional.hasOwnProperty("dayNames") || - !p_regional.hasOwnProperty("monthNames") || - !p_regional.hasOwnProperty("dateFormat") || - !p_regional.hasOwnProperty("currency") || - !p_regional.currency.hasOwnProperty("formatPos") || - !p_regional.currency.hasOwnProperty("formatNeg") || - !p_regional.currency.hasOwnProperty("decimal") || - !p_regional.currency.hasOwnProperty("thousand") || - !p_regional.currency.hasOwnProperty("precision") - ) { - iris.E("Regional '" + p_locale + "' has invalid format ", p_regional); - } - else { - _Regional[p_locale] = p_regional; - } - } - - /** - * @class - * Provide mechanism to store and retrieve settings values. - */ - var _Settable = function () { - this.__Setting__ = null; - }; - - /** - * Set multiple component settings. - * You can access to this values using {@link iris-_Settable#Setting}. - * @function - * @example - * - * self.Settings({ - * "min" : 0 - * ,"label" : "example" - * }); - */ - _Settable.prototype.Settings = function (p_settings) { - return $.extend(this.__Setting__, p_settings); - }; - - /** - * Set or get a single component setting. - * @function - * @example - * - * var label = self.Setting("label"); // Get setting value - * - * self.Setting("label", "example"); // Set setting value - */ - _Settable.prototype.Setting = function (p_label, p_value) { - if ( p_value === undefined ) { - if ( !this.__Setting__.hasOwnProperty(p_label) ) { - iris.W("The setting ", p_label, " is not in ", this.__Setting__, this); - } - return this.__Setting__[p_label]; - } - else { - this.__Setting__[p_label] = p_value; - } - }; - - - /** - * @class - * Abstract component for UIs / Screens extending. - * Common properties and functions. - */ - var _AbstractComponent = function () { - - this.TEMPLATE_APPEND = "append"; - this.TEMPLATE_REPLACE = "replace"; - this.TEMPLATE_PREPEND = "prepend"; - - this.__$Tmpl__ = null; - this.__Id__ = null; - this.__UIComponents__ = null; - this.__$Container__ = null; - this.__IsSleeping__ = null; - this.__FileJs__ = null; - this.__FileTmpl__ = null; - this.__Element__ = null; - }; - - _AbstractComponent.prototype = new _Settable(); - - _AbstractComponent.prototype.__Sleep__ = function () { - for ( var f=0, F=this.__UIComponents__.length; f < F; f++ ) { - this.__UIComponents__[f].__Sleep__(); - } - this.__IsSleeping__ = true; - this.Sleep(); - }; - - _AbstractComponent.prototype.__Awake__ = function (p_params) { - for ( var f=0, F=this.__UIComponents__.length; f < F; f++ ) { - this.__UIComponents__[f].__Awake__(); - } - this.__IsSleeping__ = false; - this.Awake(p_params); - }; - - _AbstractComponent.prototype.__Destroy__ = function () { - if ( !this.__IsSleeping__ ) { - this.__Sleep__(); - } - - for ( var f=0, F=this.__UIComponents__.length; f < F; f++ ) { - this.__UIComponents__[f].__Destroy__(); - } - this.__UIComponents__ = null; - this.Destroy(); - }; - - _AbstractComponent.prototype.__Template__ = function (p_htmlUrl, p_params, p_mode) { - this.__FileTmpl__ = p_htmlUrl; - - if ( typeof p_htmlUrl === "undefined" ) { - this.__$Tmpl__ = this.__$Container__; - return this.__$Tmpl__; - } - - iris.Include(p_htmlUrl); - - var tmplHtml = p_params ? _TemplateParse(_Includes[p_htmlUrl], p_params, p_htmlUrl) : _Includes[p_htmlUrl]; - var $tmpl = $(tmplHtml); - - this.__$Tmpl__ = $tmpl; - if ( $tmpl.size() > 1 ) { - iris.E("Template '" + p_htmlUrl + "' must have only one root node"); - } - switch ( p_mode ) { - case this.TEMPLATE_APPEND: - this.__$Container__.append($tmpl); - break; - case this.TEMPLATE_REPLACE: - this.__$Container__.replaceWith($tmpl); - break; - case this.TEMPLATE_PREPEND: - this.__$Container__.prepend($tmpl); - break; - default: - iris.E("Unknown template mode '" + p_mode + "'"); - } - - }; - - // Check if the template is set (https://github.com/intelygenz/iris/issues/19) - _AbstractComponent.prototype.__CheckTmpl__ = function () { - if ( this.__$Tmpl__ === null ) { - iris.E("You must set a template using self.Template() in '" + this.__FileJs__ + "'"); - return undefined; - } - }; - - /** - * Show the template object. - * If the component is a screen, this is called automatically - * after self.Awake() when iris navigates. - * - * See {@link iris.Goto} for more details. - * @function - */ - _AbstractComponent.prototype.Show = function () { - this.__CheckTmpl__(); - - this.__$Tmpl__.show(); - }; - - /** - * Hide the template object. - * If the component is the current screen, this is called automatically - * after self.Sleep() when iris navigates to other screen. Is called too - * when a new screen is created. - * - * See {@link iris.Goto} for more details. - * @function - */ - _AbstractComponent.prototype.Hide = function () { - this.__CheckTmpl__(); - - this.__$Tmpl__.hide(); - }; - - - - /** - * Find a JQuery object, using its data-id attribute, in the template. - * The template must be defined using self.Template().
- * The data-id must be unique in the template. - * - * @function - * @param {String} [p_id] Element data-id value, if no set return root element (optional) - * @example - * - * var $label = self.$Get("span_label"); - * - * var $root = self.$Get(); - */ - _AbstractComponent.prototype.$Get = function(p_id) { - this.__CheckTmpl__(); - - if (p_id) { - - if (!this.__Element__.hasOwnProperty(p_id)) { - var id = "[data-id=" + p_id + "]", filter = this.__$Tmpl__.filter(id), $element = null; - - if (filter.length > 0) { - $element = filter; - } else { - var find = this.__$Tmpl__.find(id); - if (find.size() > 0) { - $element = find; - } - } - - if ($element === null) { - iris.E("[data-id=" + p_id + "] not found in '" + this.__FileTmpl__ + "' used by '" + this.__FileJs__ + "'"); - return undefined; - } else if ($element.size() > 1) { - iris.E("[data-id=" + p_id + "] must be unique in '" + this.__FileTmpl__ + "' used by '" + this.__FileJs__ + "'"); - return undefined; - } - - this.__Element__[p_id] = $element; - } - - return this.__Element__[p_id]; - } - - return this.__$Tmpl__; - }; - - /** - * Create a new UI component instance. - * - * The created component is registered into the parent screen or UI, so you - * must use {@link iris-_AbstractComponent#DestroyUI} in order to remove it. - * - * The component is added to p_id container or replace it. - * See {@link iris-_AbstractUI#TemplateMode} for more details. - * - * @function - * @param {String} - * p_id Container data-id - * @param {String} - * p_jsUrl UI file path - * @param {Object} - * [p_uiSettings] UI Settings is optional - * @param {Constant} - * [p_templateMode] Use self.TEMPLATE_APPEND, - * self.TEMPLATE_PREPEND, the default mode - * isself.TEMPLATE_REPLACE (optional) - * @example - * - * self.InstanceUI("custom_ui", "custom_ui.js"); - * - * self.InstanceUI("btn_ok", "button.js", {"label":"OK","ico":"accept"}); - * - * self.InstanceUI("btn_ok", "button.js", {"label":"example"}, - * self.TEMPLATE_PREPEND); - */ - _AbstractComponent.prototype.InstanceUI = function (p_id, p_jsUrl, p_uiSettings, p_templateMode) { - var $container = this.$Get(p_id); - if ( $container.size() === 1 ) { - var uiInstance = _InstanceUI($container, $container.data("id"), p_jsUrl, p_uiSettings, p_templateMode); - this.__UIComponents__[this.__UIComponents__.length] = uiInstance; - return uiInstance; - } - }; - - /** - * Remove a child UI component completely previously created using {@link self.InstanceUI}. - * Remove parent references. - * @function - * @param {UI} p_ui UI to be removed - * @example - * - * var customUI = self.InstanceUI("custom_ui", "custom_ui.js"); - * self.DestroyUI(customUI); - */ - _AbstractComponent.prototype.DestroyUI = function (p_ui) { - for (var f=0, F=this.__UIComponents__.length; f < F; f++) { - if (this.__UIComponents__[f] === p_ui) { - this.__UIComponents__.splice(f, 1); - p_ui.__Destroy__(); - p_ui.$Get().remove(); - break; - } - } - }; - - /** - * Remove all UI components from a container. - * The UIs must be previously created using {@link self.InstanceUI}.
- * Remove parent references. - * @function - * @param {String|JQuery} p_idOrJq UI Container data-id or JQuery object - * @example - * self.DestroyAllUIs("container"); - * - * self.DestroyAllUIs($container); - */ - _AbstractComponent.prototype.DestroyAllUIs = function (p_idOrJq) { - var contSelector = typeof p_idOrJq === "string" ? "[data-id=" + p_idOrJq + "]" : p_idOrJq.selector; - var ui; - for (var f=0, F=this.__UIComponents__.length; f < F; f++) { - ui = this.__UIComponents__[f]; - - if (ui.__$Container__.selector === contSelector) { - this.__UIComponents__.splice(f--, 1); - F--; - - ui.__Destroy__(); - ui.$Get().remove(); - } - } - }; - - /** - * Get the component container. - * If the component is a screen, the container is - * set using {@link iris-_AbstractScreen#AddScreen} function. - * Otherwise if the component is a UI, the container is - * set using {@link iris-_AbstractComponent#InstanceUI} function. - * @function - * @example - * - * var screenContainer = self.$Container(); - */ - _AbstractComponent.prototype.$Container = function () { - return this.__$Container__; - }; - - // To override functions - - /** - * Called automatically only once at the creation phase. - * Function to override. - * @function - */ - _AbstractComponent.prototype.Create = function () {}; - - /** - * Called automatically when a screen is showed. - * Function to override. - * @function - */ - _AbstractComponent.prototype.Awake = function () {}; - - /** - * Called automatically when a screen is going to sleep, before {@link iris-_AbstractComponent#Sleep}. - * If return false, the self.Sleep() function is not called. - * @function - */ - _AbstractComponent.prototype.CanSleep = function () { - return true; - }; - - /** - * Called automatically when a screen is hidden. - * Function to override. - * @function - */ - _AbstractComponent.prototype.Sleep = function () {}; - - /** - * Called automatically by {@link iris-_AbstractComponent#DestroyUI}. - * Function to override. - */ - _AbstractComponent.prototype.Destroy = function () {}; - - /** - * @class - * Abstract class for AddOn extending. - * Common AddOn functions and properties. - */ - var _AbstractAddOn = function () { - this.__Components__ = null; - }; - - _AbstractAddOn.prototype = new _Settable(); - - /** - * Add a array of UIs to the AddOn. - * It is called automatically from {@link iris.ApplyAddOn}. - * @param p_uis {Array} Array of UIs - * @function - */ - _AbstractAddOn.prototype.AddAll = function (p_uis) { - for (var f=0, F=p_uis.length; fself.TEMPLATE_REPLACE. - * Use this function before call {@link iris-_AbstractUI.Template}. - * @function - * @example - * self.TemplateMode(self.TEMPLATE_APPEND); - * self.Template("tmpl.html"); - */ - _AbstractUI.prototype.TemplateMode = function (p_mode) { - this.__TemplateMode__ = p_mode; - }; - - /** - * Create the component template. - * Translate multilanguage values, draw parameters, - * create DOM elements and insert into container or replace it. - * - * See {@link iris-_AbstractUI.TemplateMode}. - * @function - * @example - * self.TemplateMode(self.TEMPLATE_APPEND); - * self.Template("tmpl.html", {"age":23}); - */ - _AbstractUI.prototype.Template = function (p_htmlUrl, p_params) { - this.__Template__(p_htmlUrl, p_params, this.__TemplateMode__); - }; - - - /** - * @class - * Abstract class for screen extending. - * Common screen functions and properties. - */ - var _AbstractScreen = function () {}; - - _AbstractScreen.prototype = new _AbstractComponent(); - - /** - * Create the screen template. - * Translate multilanguage values, draw parameters, - * create DOM elements and it is insert into the screen container. - * @function - * @example - * self.Template("tmpl.html", {"name":"Jonh"}); - */ - _AbstractScreen.prototype.Template = function (p_htmlUrl, p_params) { - this.__Template__(p_htmlUrl, p_params, this.TEMPLATE_APPEND); - }; - - /** - * Add a new screen. - * You can navigate to this using iris.Goto. - * See {@link iris.Goto} for more details. - * @function - * @param {JQuery} p_containerId Screen container data-id - * @param {String} p_screenPath Screen URL path - * @param {String} p_jsUrl Screen controller - * @example - * self.AddScreen( - * "screens" - * , "#books/edit" - * , "screen/book_edit.js" - * ); - * - * iris.Goto("#books/edit"); - */ - _AbstractScreen.prototype.AddScreen = function _ScreenAdd (p_containerId, p_screenPath, p_jsUrl) { - var $cont = this.$Get(p_containerId); - - if ( $cont.data("screen_context") === undefined ) { - - // Set a unique screen context id to the screen container - // like: #path/to/screen|containerid - $cont.data("screen_context", this.__Id__ + "|" + p_containerId); - } - - _ScreenUrl[p_screenPath] = p_jsUrl; - _ScreenContainer[p_screenPath] = $cont; - }; - - - function _Deserialize (p_$form, p_data) { - var element, tag, value; - for ( var name in p_data ) { - if ( p_data.hasOwnProperty(name) ) { - element = p_$form.find('[name="' + name + '"]'); - - if ( element.length > 0 ) { - tag = element[0].tagName.toLowerCase(); - value = p_data[name]; - switch (tag) { - case "select": - case"textarea": - $(element).val(value); - break; - case "input": - switch (tag) { - case "checkbox": - if (value) { - element.attr("checked", "checked"); - } - break; - case "radio": - element.filter('[value="' + value + '"]').attr("checked", "checked"); - break; - default: - element.val(value); - } - } - } - } - } - } - - function _Serialize (p_$form) { - var json = {}; - $.map(p_$form.serializeArray(), function(p_obj){ - json[ p_obj.name ] = p_obj.value; - }); - return json; - } - - - /** @namespace Screen management: Add a new screen, ... */ - iris.screen = {}; - - /** @namespace Event management: Add/remove listeners and trigger events. */ - iris.event = {}; - - /** @namespace Application configuration: Load configuration data and environments. */ - iris.config = {}; - - /** @namespace User interface: Work with HTML elements. */ - iris.ui = {}; - - /** @namespace Asynchronous HTTP request and URL base. */ - iris.net = {}; - - /** @namespace Global configurations management */ - iris.global = {}; - - /** @namespace Environment configurations management */ - iris.local = {}; - - /** @namespace Multilanguage : Load translation files, get translated text, ...*/ - iris.lang = {}; - - /** @namespace Various utilities: Date formatting, serialization, ... */ - iris.util = {}; - - /** - * Load the configuration JSON. - * You can use iris without load this file. - * @function - * @param {JSON} config Contains information about environments, global and environment settings, loglevel logs ... - * @example - * iris.config.Load({ - * "environment-default" : "pro" - *,"environments-nocache" : "dev" - * ,"environment": { - * "localhost" : "dev" - * ,"www.example.com" : "pro" - * } - * ,"log": { - * "dev": "debug,warning,error" - * ,"pro" : "debug,error" - * } - * ,"global": { - * "global-variable" : "example" - * } - * ,"local": { - * "local-variable" : { - * "dev" : "example-dev" - * ,"pro" : "example-pro" - * } - * } - * }); - * - */ - iris.config.Load = _ConfigLoad; - - /** - * Set or get the current environment. - * If a configuration file is loaded, iris try set this value using - * the current URL and the defined environments. - * If not match anything use "environment-default" - * The local variables depends of this value. - * @function - * @param {String} [p_env] Environment name (optional) - * @example - * Example: URL=http://localhost:8080/admin - * Configuration file: - * ... - * "environment": { - * "localhost" : "dev" - * ,"www.example.com" : "pro" - * } - * ... - * - * iris.config.Env(); // return "dev" - * - * iris.config.Env("pro"); // set environment to "pro" - */ - iris.config.Env = _GetEnv; - - /** - * Add global configuration values​​. - * If you load a configuration file, automatically load the object "global" ({@link iris.config.Load}). - * See {@link iris.global.Data} for more details. - * @function - * @param {Object} p_hash Object like: { "name" : value, ... } - * @example - * iris.global.Load({"global-variable" : "value"}); - * iris.global.Data("global-variable"); // return "value" - */ - iris.global.Load = _GlobalLoad; - - /** - * Get or set the value of a global configuration variable. - * If label and value are not specified then return an object with all values. - * See {@link iris.global.Load} for more details. - * @function - * @param {String} [p_label] Variable label (optional) - * @param {String} [p_value] Variable value (optional) - * @example - * iris.global.Data("global-variable"); - */ - iris.global.Data = _GlobalData; - - /** - * Add configuration values that depends on current environment. - * If you load a configuration file, automatically load the object "local" ({@link iris.config.Load}). - * See {@link iris.local.Data} for more details. - * @function - * @param {Object} p_hash Object like: { "name" : {"environment" : value, ... }, ... } - * @example - * iris.global.Load({"global-variable" : "value"}); - * iris.global.Data("global-variable"); // return "value" - */ - iris.local.Load = _LocalLoad; - - /** - * Get or set the value of a configuration variable that depends on current environment. - * If label and value are not specified then return an object with all values. - * See {@link iris.local.Load} for more details. - * @function - * @param {String} [p_label] Variable label (optional) - * @param {String} [p_value] Variable value (optional) - * @example - * iris.local.Data({ - * "local-variable" : { - * "dev" : "example-dev" - * ,"pro" : "example-pro" - * } - * }); - * - * // If environemnt="dev" then return "example-dev" - * iris.local.Data("local-variable"); - */ - iris.local.Data = _LocalData; - - /** - * Add translation texts to a locale. - * See {@link iris.lang.Get} for more details. - * @function - * @param {String} p_locale Locale - * @param {Object} p_data Object like { "LABEL" : "value", GROUP : { "LABEL" : "value", ... }, ... } - * @example - * iris.lang.Load( "es-ES" - * ,{ "LABEL":"etiqueta" - * ,{"GROUP":{ - * "NESTED_VALUE" : "valor anidado" - * } - * }); - * - * iris.lang.Get("LABEL"); - * iris.lang.Get("GROUP.NESTED_VALUE"); - */ - iris.lang.Load = _LocaleLoad; - - /** - * Load remote translation texts into a locale. - * @function - * @param {String} p_locale Locale - * @param {String} p_uri URL to load - * @param {Object} p_settings {"success" : function (p_locale) {}, "error" : function (p_locale) {}} - * @example - * iris.lang.LoadFrom( - * "es-ES" - * , "http://example.com/lang" - * , {"success":_OnLangLoad} - * ); - */ - iris.lang.LoadFrom = _LangLoadFrom; - - /** - * Get a translation text according to the Locale. - * You can access to nested values using dot notation. - * See {@link iris.local.Locale} for more details. - * @function - * @param {String} p_label Label - * @example - * iris.lang.Get("LABEL"); - * - * iris.lang.Get("GROUP.LABEL"); - */ - iris.lang.Get = _LangGet; - - /** - * Set or get the current locale. - * @function - * @param {String} [p_locale] Locale (optional) - * @example - * var locale = iris.lang.Locale(); - * iris.lang.Locale("es-ES"); - */ - iris.lang.Locale = _LocaleGet; - - /** - * Safe debug traces. - * @function - * @param {arguments} - * @example - * iris.L("text", variable); - */ - iris.L = _L; - - /** - * Safe debug traces. If debug-level is active for the current environment then print traces. - * See {@link iris.config.Load} for more details. - * @function - * @param {arguments} - * @example - * iris.D("text", variable); - */ - iris.D = _D; - - /** - * Safe warning traces. If warning-level is active for the current environment then print traces. - * @function - * @see {@link iris.config.Load} - * @param {arguments} - * @example - * iris.W("text", variable); - */ - iris.W = _W; - - /** - * Safe error traces. If error-level is active for the current environment then print traces. - * See {@link iris.config.Load} for more details. - * @function - * @param {arguments} - * @example - * iris.E("text", variable); - */ - iris.E = _E; - - /** - * Event fired before do a navigation. - * @example - * iris.event.Subscribe(iris.event.BEFORE_NAVIGATION, _OnBeforeNavigation); - */ - iris.event.BEFORE_NAVIGATION = "iris_before_navigation"; - - /** - * Add an event listener. - * See {@link iris.event.Notify} and {@link iris.event.Remove} for more details. - * @function - * @param {String} p_eventName Event identifier - * @param {Function} f_func Event listener - * @example - * iris.event.Subscribe("user_select", _OnUserSelect); - */ - iris.event.Subscribe = _EventSubscribe; - - /** - * Trigger an event. - * See {@link iris.event.Subscribe} and {@link iris.event.Remove} for more details. - * @function - * @param {String} p_eventName Event identifier - * @param {Object} p_data Event paramater - * @example - * iris.event.Notify( - * "user_select" - * , {"user_id" : 123, "name" : "John"} - * ); - */ - iris.event.Notify = _EventNotify; - - /** - * Remove an event listener. - * See {@link iris.event.Subscribe} and {@link iris.event.Notify} for more details. - * @function - * @param {String} p_eventName Event identifier - * @param {String} f_func Event listener - * @example - * iris.event.Remove("user_select", _OnUserSelect); - */ - iris.event.Remove = _EventRemove; - - /** - * Get or set the application base URL. - * Use the <base > HTML tag if are defined. - * @function - * @param {String} [p_baseUri] URL base (optional) - * @example - * // Current URL = http://www.example.com/admin/example/path?a=1 - * iris.net.BaseUri(); // return http://www.example.com/ - */ - iris.net.BaseUri = _BaseUri; - - /** - * Do an Ajax request. - * Accepts the same parameters as jQuery.ajax() - * @function - * @see JQuery Ajax. - * @example - * iris.net.Ajax( - * { "url" : "/s/myservice" - * , "type" : "GET" - * } - * ); - */ - iris.net.Ajax = _Ajax; - - /** - * Set a URL parameter to be used as cache version control. - * This parameter will be appended to URL string automatically - * when loading static resources. - * @function - * @param {String} p_value Parameter value - */ - iris.net.CacheVersion = _SetCacheVersion; - - /** - * Register a Screen object. - * It must appear at the beginning of the screen file. - * @function - * @param {Function} f_screen Screen class - * @example - * iris.Screen( - * function (self) { - * self.Create = function () { - * } - * - * self.Awake = function (p_params) { - * } - * - * self.Sleep = function () { - * } - * } - * ); - */ - iris.Screen = _CreateScreen; - - /** - * Register an UI object. - * It must appear at the beginning of the screen file. - * @function - * @param {Function} f_ui UI class - * @example - * iris.UI( - * function (self) { - * self.Create = function (p_domAttr, p_settings) { - * } - * - * self.Awake = function (p_params) { - * } - * - * self.Sleep = function () { - * } - * } - * ); - */ - iris.UI = _CreateUI; - - /** - * Set the initial screen. - * This screen is registered as the root screen - * and automatically is shown. - * @param {String} p_jsUrl Screen controller - * @function - * @example - * iris.screen.WelcomeScreen("screen/main.js"); - */ - iris.screen.WelcomeScreen = _WelcomeScreen; - - /** - * Destroy a created screen. - * Free screen and its UIs memory. - * Call in cascade all Sleep() and Destroy() functions for its UI childs. - * @function - * @param {String} p_screenPath Screen URL path - * @example - * iris.screen.Destroy("#books/edit"); - */ - iris.screen.Destroy = _DestroyScreen; - - /** - * Copy all data-* attributes to an object. - * Remove the "data-" prefix from attribute names. - * @function - * @param {JQuery} p_$obj Object to merge - * @example - * var $obj = $("<div data-id='test' data-class='myclass'></div>") - * var params = iris.ui.JqToHash($obj); - * // return: {"id" : "test", "class" : "myclass"} - */ - iris.ui.JqToHash = _JqToHash; - - /** - * Set the object values to a JQuery object. - * @function - * @param {Object} p_hash Object with source values - * @param {JQuery} p_$obj JQuery object target - * @param {String[]} [p_filter] Indicates that values ​​should be copied (optional) - * @example - * iris.ui.HashToJq( - * { "class":"myclass", "other":"other_value" } - * , $obj - * , class"] - * ); // Set the $obj attribute "class" - */ - iris.ui.HashToJq = _HashToJq; - - /** - * Include static resources dynamically. - * The load is synchronous and tracks all the files included to prevent them to be included twice.
- * You can include:
- *
    - *
  • CSS files: style files are included by creating a link dynamically in the header of the index page.
  • - *
  • JS files: script files are included by creating a script object dynamically in the header of the index page - * and append the loaded content to it. When including javascript files you must take care of the syntax - * as including javascript file with some syntax error would produce an error when adding it to a script element.
  • - *
- * @function - * @param {arguments} File paths - * @example - * iris.Include("app/service/myservice.js", "app/css/mycss.css"); - */ - iris.Include = _IncludeFiles; - - /** - * Formats a Date object or timestamp to the specified format and according to the current locale.
- * You can use the following special characters:

- * a 'a.m.' or 'p.m.'
- * A 'AM' or 'PM'
- * b Month, textual, 3 letters, lowercase. 'jan'
- * d Day of the month, 2 digits with leading zeros. '01' to '31'
- * D Day of the week, textual, 3 letters. 'Fri'
- * F Month, textual, long. 'January'
- * h Hour, 12-hour format. '01' to '12'
- * H Hour, 24-hour format. '00' to '23'
- * i Minutes. '00' to '59'
- * l Day of the week, textual, long. 'Friday'
- * m Month, 2 digits with leading zeros. '01' to '12'
- * M Month, textual, 3 letters. 'Jan'
- * n Month without leading zeros. '1' to '12'
- * s Seconds, 2 digits with leading zeros. '00' to '59'
- * U Seconds since the Unix Epoch (January 1 1970 00:00:00 UTC)
- * y Year, 2 digits. '99'
- * Y Year, 4 digits. '1999'
- * @function - * @param {Date|Timestamp} p_date Date object or timestamp (UNIX timestamp) - * @param {String} [p_format] Format string (optional) - * @example - * iris.util.DateFormat(new Date(),"ymd"); - * iris.util.DateFormat("1331954654564","d/m/y h:i:s"); // 17/03/12 04:24:14 - * iris.util.DateFormat(1331954654564); - */ - iris.util.DateFormat = _DateFormat; - - - /** - * Formats a Number or String to Currency using the current locale defined at {@link iris.Regional}
- * @function - * @param {Number|String} p_value Number or String number - * @example - * regional = en-US - * iris.util.Currency(1234.56); -> $ 1,234.56 - * iris.util.Currency("123456789"); -> $ 123,456,789 - * regional = es-ES - * iris.util.Currency(1234.56); -> 1,234.56 € - * iris.util.Currency("123456789"); -> 123,456,789 € - */ - iris.util.Currency = _ParseCurrency; - - - /** - * Fill all form component with data. - * @function - * @param p_$form {JQuery Object} Form target - * @param p_data {Object} Object data source - * @example - * var data = {"name":"Jonh", "surname": "Doe"}; - * iris.util.Deserialize($form, data); - */ - iris.util.Deserialize = _Deserialize; - - /** - * Serialize a form data to Object. - * @function - * @param p_$form - * @example - * var data = iris.util.Serialize($form); - */ - iris.util.Serialize = _Serialize; - - /** - * Navigate to a screen. - * The screen must be previously added using {@link iris-_AbstractScreen#AddScreen}.
- * You can send parameters to the target screen as ... /screen?param1=value1¶m2=value2/ ..., - * remember apply encodeURIComponent() to the parameter values.
- * @function - * @param p_hashUri {String} Hash URL - * @example - * - * iris.Goto("#home/section/subsection"); - * - * // Call with screen parameters - * iris.Goto("#home/section?id=5&name=example%20name/subsection"); - * - * // Remember encode param values - * var email = encodeURIComponent("user@example.com"); - * iris.Goto("#home/section?email=" + email); - */ - iris.Goto = _Goto; - - /** - * Register a AddOn object. - * It must appear at the beginning of the AddOn file. - * @function - * @param {Function} f_addOn AddOn Class - * @example - * iris.AddOn( - * function (self) { - * self.Create = function ( p_uis ) { - * } - * ... - * } - * ); - */ - iris.AddOn = _CreateAddOn; - - /** - * Apply a AddOn to a group of UI components or single UI. - * @function - * @param p_id {String} AddOn identifier - * @param p_uis {Object|Array} UI Component/s - * @example - * var customUI = self.InstanceUI("input", "input.js"); - * iris.ApplyBE("validator.js", customUI); - * - * var otherCustomUI = self.InstanceUI("input", "input.js"); - * iris.ApplyAddOn("validator.js", [customUI, otherCustomUI]); - * - */ - iris.ApplyAddOn = _ApplyAddOn; - - /** - * Specify a new regional or change the actuals regionals to format dates and currencies. - * You must set a valid regional object with all properties: 'dayNames', 'monthNames', etc...
- * Iris has two predefined regionals: - *
    "en-US" : {
-     *         dayNames : ["Sunday","Monday","Tuesday"
-     *                ,"Wednesday","Thursday","Friday","Saturday"]
-     *        ,monthNames : ["January","February","March"
-     *                ,"April","May","June","July"
-     *                ,"August","September","October"
-     *                ,"November","December"]
-     *        ,dateFormat : "m/d/Y h:i:s"
-     *        ,currency : {
-     *             formatPos : "$ n"
-     *            ,formatNeg : "($ n)"
-     *            ,decimal : "."
-     *            ,thousand : ","
-     *            ,precision : 2
-     *        }
-     *    }
-     *    
-     *    "es-ES" : {
-     *         dayNames : ["Domingo","Lunes","Martes"
-     *            ,"Miércoles","Jueves","Viernes","Sábado"]
-     *        ,monthNames : ["Enero","Febrero","Marzo"
-     *            ,"Abril","Mayo","Junio","Julio","Agosto"
-     *            ,"Septiembre","Octubre","Noviembre","Diciembre"]
-     *        ,dateFormat : "d/m/Y H:i:s"
-     *        ,currency : {
-     *             formatPos : "n"
-     *            ,formatNeg : "-n"
-     *            ,decimal : ","
-     *            ,thousand : "."
-     *            ,precision : 2
-     *        }
-     *    }
- * @function - * @param p_locale {String} Locale identifier - * @param p_regional {Object} Regional data - * @example - * iris.Regional("custom-es_ES", { - * dayNames : ["D","L","M","M","J","V","S"] - * ,monthNames : ["Ene","Feb","Mar","Abr","May","Jun" - * ,"Jul","Ago","Sep","Oct","Nov","Dic"] - * ,dateFormat : "d/m/Y" - * ,currency : { - * formatPos : "n" - * ,formatNeg : "-n" - * ,decimal : "," - * ,thousand : "." - * ,precision : 2 - * } - * } - */ - iris.Regional = _AddRegional; - - - _Init(); - -})(); \ No newline at end of file +/*! Iris - v0.5.0 - 2012-11-17 +* https://github.com/iris-js/iris.git +* Copyright (c) 2012 Iris; Licensed New-BSD */ + +/** + * @namespace + * This JavaScript library provides different client-side optimization techniques for front construction. + * It is independent and compatible with any server-side technology: JAVA, PHP, Python, GOOGLE APP ENGINE, .NET... + * + */ +var iris = { + + /** @namespace Event management: Add/remove listeners and trigger events. */ + event : {}, + + /** @namespace Application configuration: Load configuration data and environments. */ + config : {}, + + /** @namespace Asynchronous HTTP request and URL base. */ + net : {}, + + /** @namespace Global configurations management */ + global : {}, + + /** @namespace Environment configurations management */ + local : {}, + + /** @namespace Multilanguage : Load translation files, get translated text, ...*/ + lang : {}, + + /** @namespace Various utilities: Date formatting, serialization, ... */ + util : {} +}; + + +(function ($) { + + var _CacheVersion, + _JQ_MIN_VER = 1.5, + _Env = null, + _Log = {"error":true}, + _LogPrefix = "", + _Screen = {}, + _ScreenUrl = {}, + _ScreenContainer = {}, + _LastScreen = {}, + _PrevHashUrl = "", + _Global = {}, + _Local = {}, + _Locale = null, + _Config = {}, + _Lang = {}, + _Event = {}, + _Includes = {}, + _AddOns = {}, + _AppBaseUri = "", + _LastIncludePath, + _Head = $("head").get(0), + _Cache = true, + _HasConsole, + _GotoCancelled = false, + _WelcomeScreenCreated = false + ; + + function _Init () { + + // CHECK JQ DEPENDENCY + if( typeof jQuery === "undefined" ) { + _E( "jQuery " + _JQ_MIN_VER + "+ previous load required" ); + } + else if ( $().jquery < _JQ_MIN_VER ) { + _E( "jQuery " + $().jquery + " currently loaded, jQuery " + _JQ_MIN_VER + "+ required" ); + } + + // CHECK CONSOLE SUPPORT + _HasConsole = (window.console && window.console.debug && window.console.warn && window.console.error); + if ( !_HasConsole && window.console && window.console.log ) { + window.console.log("advanced console debugging is not supported in this browser"); + } + } + + + function _LogOf (p_type) { + return _Log[p_type]; + } + + function _L(){ + if ( _HasConsole && window.console.log) { + window.console.log(_LogPrefix, arguments); + } + } + + function _D(){ + if(_HasConsole && _LogOf("debug") ){ + window.console.debug(_LogPrefix, arguments); + } + } + + function _W(){ + if(_HasConsole && _LogOf("warning") ){ + window.console.warn(_LogPrefix, arguments); + } + } + + function _E(){ + if(_HasConsole && _LogOf("error") ){ + window.console.error(_LogPrefix, arguments); + } + } + + + + function _Goto (p_hashUri) { + _PrevHashUrl = document.location.hash; + document.location.hash = p_hashUri; // Trigger hashchange event, then execute _Window_OnHashChange() + } + + function _Window_OnHashChange () { + + if ( !_WelcomeScreenCreated ) { + iris.E("You must set the welcome screen using iris.screen.WelcomeScreen()"); + return false; + } + + iris.event.Notify(iris.event.BEFORE_NAVIGATION); + + if ( _GotoCancelled ) { + _GotoCancelled = false; + return false; + } + + var prev = _PrevHashUrl.split("/"), + curr = document.location.hash.split("/"), + prevPath = "", + currPath = "", + pathWithoutParams, + hasRemainingChilds = false, + i + ; + + // Check if all screen.canSleep() are true + if ( _PrevHashUrl !== "" ) { + for ( i=0; i curr.length ) { + + for ( i=0; i 0 ? base[0].attributes.href.value : "/"; + _AppBaseUri = document.location.protocol + "//" + document.location.host + base; + } + return _AppBaseUri; + } + + function _Ajax (p_settings) { + return $.ajax(p_settings); + } + + function _AjaxSync (p_uri, p_dataType, f_success, f_error) { + var ajaxSettings = { + url: p_uri, + dataType: p_dataType, + async: false, + cache: _Cache, + success : f_success, + error : f_error + }; + + if ( _Cache && _CacheVersion !== undefined ) { + ajaxSettings.data = "_=" + _CacheVersion; + } + + $.ajax(ajaxSettings); + } + + function _SetCacheVersion (p_value) { + _CacheVersion = p_value; + } + + + function _IncludeFiles () { + for ( var f=0,F=arguments.length; f -1 ) { + var link = document.createElement('link'); + link.rel = 'stylesheet'; + link.type = 'text/css'; + link.href = fileUrl; + _Head.appendChild(link); + } + else { + var isHtml = p_uiFile.lastIndexOf(".html") > -1; + _AjaxSync( + fileUrl, + (isHtml ? "html" : "text"), + function (p_data) { + _LastIncludePath = p_uiFile; + + if ( isHtml ) { + _Includes[p_uiFile] = _LocaleParse(p_data); + } + else { + var script = document.createElement("script"); + script.language = "javascript"; + script.type = "text/javascript"; + script.text = p_data; + _Head.appendChild(script); + } + + }, + function (p_err) { + delete _Includes[fileUrl]; + _E(p_err.status, "Error loading file '" + fileUrl + "'"); + } + ); + } + } + } + + + function _ConfigLoad (p_json){ + if ( p_json ) { + $.extend(_Config, p_json); + + _GlobalLoad( _Config.global ); + + var currentEnv = _GetEnv(); + if ( _Config.log ) { + var logConfig = _Config.log[currentEnv]; + var logs = logConfig.split(","); + for ( var i=0; i < logs.length; i++ ) { + _Log[ $.trim(logs[i]) ] = true; + } + } + + _Cache = true; + if ( _Config.hasOwnProperty("environments-nocache") ) { + var envNocache = _Config["environments-nocache"].split(","); + for ( var f=0, F=envNocache.length; f -1 ) { + _Env = _Config.environment[p]; + break; + } + } + if ( !_Env ) { + _Env = "pro"; + } + _LogPrefix = "[" + _Env + "]"; + } + return _Env; + } + } + + function _GlobalLoad(p_hash){ + $.extend(_Global, p_hash); + return _Global; + } + + function _GlobalData (p_label, p_value){ + if ( p_label && p_value !== undefined ) { + _Global[p_label] = p_value; + } + else if ( p_label ) { + return _Global[p_label]; + } + else { + return _Global; + } + } + + function _LocalLoad(p_hash){ + $.extend(_Local, p_hash); + return _Local; + } + + function _LocalData(p_label, p_value){ + if ( p_label && p_value !== undefined ) { + _Local[p_label][_GetEnv()] = p_value; + } + else if ( p_label ) { + return _Local[p_label][_GetEnv()]; + } + else { + return _Local; + } + } + + + // + // EVENT + // + function _FindEvent(p_eventName, f_func){ + var events = _Event[p_eventName]; + if ( events ) { + for ( var f=0, F=events.length; f -1 ){ + var labels = p_label.split("."); + var f,F=labels.length; + for(f=0; f= 0) ? settings.formatPos : settings.formatNeg; + + var decimal = val % 1; + var num = String( Math.abs(val-decimal) ); + + decimal = String(Math.abs(decimal).toFixed(settings.precision)); + decimal = decimal.substr(2); + + for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) { + num = num.substring(0, num.length - (4 * i + 3)) + settings.thousand + num.substring(num.length - (4 * i + 3)); + } + + return format.replace("n", num + settings.decimal + decimal ); + } + + function _DateFormat (p_date, p_format) { + if ( !p_format ) { + p_format = _GetRegionalSetting("dateFormat"); + } + + if ( typeof p_date !== "object" ) { + p_date = new Date(Number(p_date)); + } + + var dateFormat = ""; + for (var f=0, F=p_format.length; f 12) ? "p.m." : "a.m."; + case "A": + return (p_date.getHours() > 12) ? "PM" : "AM"; + case "U": + return Math.floor(p_date.getTime() * 0.001); + default: + return p_formatChar; + } + } + + var _Regional = { + "en-US" : { + dayNames : ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"], + monthNames : ["January","February","March","April","May","June","July","August","September","October","November","December"], + dateFormat : "m/d/Y h:i:s", + currency : { + formatPos : "n", + formatNeg : "(n)", + decimal : ".", + thousand : ",", + precision : 2 + } + }, + "es-ES" : { + dayNames : ["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"], + monthNames : ["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"], + dateFormat : "d/m/Y H:i:s", + currency : { + formatPos : "n", + formatNeg : "-n", + decimal : ",", + thousand : ".", + precision : 2 + } + } + }; + + function _AddRegional (p_locale, p_regional) { + if ( !p_regional.hasOwnProperty("dayNames") || + !p_regional.hasOwnProperty("monthNames") || + !p_regional.hasOwnProperty("dateFormat") || + !p_regional.hasOwnProperty("currency") || + !p_regional.currency.hasOwnProperty("formatPos") || + !p_regional.currency.hasOwnProperty("formatNeg") || + !p_regional.currency.hasOwnProperty("decimal") || + !p_regional.currency.hasOwnProperty("thousand") || + !p_regional.currency.hasOwnProperty("precision") + ) { + iris.E("Regional '" + p_locale + "' has invalid format ", p_regional); + } + else { + _Regional[p_locale] = p_regional; + } + } + + /** + * @class + * Provide mechanism to store and retrieve settings values. + */ + var _Settable = function () { + this.__Setting__ = null; + }; + + /** + * Set multiple component settings. + * You can access to this values using {@link iris-_Settable#Setting}. + * @function + * @example + * + * self.Settings({ + * "min" : 0 + * ,"label" : "example" + * }); + */ + _Settable.prototype.Settings = function (p_settings) { + return $.extend(this.__Setting__, p_settings); + }; + + /** + * Set or get a single component setting. + * @function + * @example + * + * var label = self.Setting("label"); // Get setting value + * + * self.Setting("label", "example"); // Set setting value + */ + _Settable.prototype.Setting = function (p_label, p_value) { + if ( p_value === undefined ) { + if ( !this.__Setting__.hasOwnProperty(p_label) ) { + iris.W("The setting ", p_label, " is not in ", this.__Setting__, this); + } + return this.__Setting__[p_label]; + } + else { + this.__Setting__[p_label] = p_value; + } + }; + + + /** + * @class + * Abstract component for UIs / Screens extending. + * Common properties and functions. + */ + var _AbstractComponent = function () { + + this.TEMPLATE_APPEND = "append"; + this.TEMPLATE_REPLACE = "replace"; + this.TEMPLATE_PREPEND = "prepend"; + + this.__$Tmpl__ = null; + this.__Id__ = null; + this.__UIComponents__ = null; + this.__$Container__ = null; + this.__IsSleeping__ = null; + this.__FileJs__ = null; + this.__FileTmpl__ = null; + this.__Element__ = null; + }; + + _AbstractComponent.prototype = new _Settable(); + + _AbstractComponent.prototype.__Sleep__ = function () { + for ( var f=0, F=this.__UIComponents__.length; f < F; f++ ) { + this.__UIComponents__[f].__Sleep__(); + } + this.__IsSleeping__ = true; + this.Sleep(); + }; + + _AbstractComponent.prototype.__Awake__ = function (p_params) { + for ( var f=0, F=this.__UIComponents__.length; f < F; f++ ) { + this.__UIComponents__[f].__Awake__(); + } + this.__IsSleeping__ = false; + this.Awake(p_params); + }; + + _AbstractComponent.prototype.__Destroy__ = function () { + if ( !this.__IsSleeping__ ) { + this.__Sleep__(); + } + + for ( var f=0, F=this.__UIComponents__.length; f < F; f++ ) { + this.__UIComponents__[f].__Destroy__(); + } + this.__UIComponents__ = null; + this.Destroy(); + }; + + _AbstractComponent.prototype.__Template__ = function (p_htmlUrl, p_params, p_mode) { + this.__FileTmpl__ = p_htmlUrl; + + if ( typeof p_htmlUrl === "undefined" ) { + this.__$Tmpl__ = this.__$Container__; + return this.__$Tmpl__; + } + + iris.Include(p_htmlUrl); + + var tmplHtml = p_params ? _TemplateParse(_Includes[p_htmlUrl], p_params, p_htmlUrl) : _Includes[p_htmlUrl]; + var $tmpl = $(tmplHtml); + + this.__$Tmpl__ = $tmpl; + if ( $tmpl.size() > 1 ) { + iris.E("Template '" + p_htmlUrl + "' must have only one root node"); + } + switch ( p_mode ) { + case this.TEMPLATE_APPEND: + this.__$Container__.append($tmpl); + break; + case this.TEMPLATE_REPLACE: + this.__$Container__.replaceWith($tmpl); + break; + case this.TEMPLATE_PREPEND: + this.__$Container__.prepend($tmpl); + break; + default: + iris.E("Unknown template mode '" + p_mode + "'"); + } + + }; + + // Check if the template is set (https://github.com/intelygenz/iris/issues/19) + _AbstractComponent.prototype.__CheckTmpl__ = function () { + if ( this.__$Tmpl__ === null ) { + iris.E("You must set a template using self.Template() in '" + this.__FileJs__ + "'"); + return undefined; + } + }; + + /** + * Show the template object. + * If the component is a screen, this is called automatically + * after self.Awake() when iris navigates. + * + * See {@link iris.Goto} for more details. + * @function + */ + _AbstractComponent.prototype.Show = function () { + this.__CheckTmpl__(); + + this.__$Tmpl__.show(); + }; + + /** + * Hide the template object. + * If the component is the current screen, this is called automatically + * after self.Sleep() when iris navigates to other screen. Is called too + * when a new screen is created. + * + * See {@link iris.Goto} for more details. + * @function + */ + _AbstractComponent.prototype.Hide = function () { + this.__CheckTmpl__(); + + this.__$Tmpl__.hide(); + }; + + + + /** + * Find a JQuery object, using its data-id attribute, in the template. + * The template must be defined using self.Template().
+ * The data-id must be unique in the template. + * + * @function + * @param {String} [p_id] Element data-id value, if no set return root element (optional) + * @example + * + * var $label = self.$Get("span_label"); + * + * var $root = self.$Get(); + */ + _AbstractComponent.prototype.$Get = function(p_id) { + this.__CheckTmpl__(); + + if (p_id) { + + if (!this.__Element__.hasOwnProperty(p_id)) { + var id = "[data-id=" + p_id + "]", filter = this.__$Tmpl__.filter(id), $element = null; + + if (filter.length > 0) { + $element = filter; + } else { + var find = this.__$Tmpl__.find(id); + if (find.size() > 0) { + $element = find; + } + } + + if ($element === null) { + iris.E("[data-id=" + p_id + "] not found in '" + this.__FileTmpl__ + "' used by '" + this.__FileJs__ + "'"); + return undefined; + } else if ($element.size() > 1) { + iris.E("[data-id=" + p_id + "] must be unique in '" + this.__FileTmpl__ + "' used by '" + this.__FileJs__ + "'"); + return undefined; + } + + this.__Element__[p_id] = $element; + } + + return this.__Element__[p_id]; + } + + return this.__$Tmpl__; + }; + + /** + * Create a new UI component instance. + * + * The created component is registered into the parent screen or UI, so you + * must use {@link iris-_AbstractComponent#DestroyUI} in order to remove it. + * + * The component is added to p_id container or replace it. + * See {@link iris-_AbstractUI#TemplateMode} for more details. + * + * @function + * @param {String} + * p_id Container data-id + * @param {String} + * p_jsUrl UI file path + * @param {Object} + * [p_uiSettings] UI Settings is optional + * @param {Constant} + * [p_templateMode] Use self.TEMPLATE_APPEND, + * self.TEMPLATE_PREPEND, the default mode + * isself.TEMPLATE_REPLACE (optional) + * @example + * + * self.InstanceUI("custom_ui", "custom_ui.js"); + * + * self.InstanceUI("btn_ok", "button.js", {"label":"OK","ico":"accept"}); + * + * self.InstanceUI("btn_ok", "button.js", {"label":"example"}, + * self.TEMPLATE_PREPEND); + */ + _AbstractComponent.prototype.InstanceUI = function (p_id, p_jsUrl, p_uiSettings, p_templateMode) { + var $container = this.$Get(p_id); + if ( $container.size() === 1 ) { + var uiInstance = _InstanceUI($container, $container.data("id"), p_jsUrl, p_uiSettings, p_templateMode); + this.__UIComponents__[this.__UIComponents__.length] = uiInstance; + return uiInstance; + } + }; + + /** + * Remove a child UI component completely previously created using {@link self.InstanceUI}. + * Remove parent references. + * @function + * @param {UI} p_ui UI to be removed + * @example + * + * var customUI = self.InstanceUI("custom_ui", "custom_ui.js"); + * self.DestroyUI(customUI); + */ + _AbstractComponent.prototype.DestroyUI = function (p_ui) { + for (var f=0, F=this.__UIComponents__.length; f < F; f++) { + if (this.__UIComponents__[f] === p_ui) { + this.__UIComponents__.splice(f, 1); + p_ui.__Destroy__(); + p_ui.$Get().remove(); + break; + } + } + }; + + /** + * Remove all UI components from a container. + * The UIs must be previously created using {@link self.InstanceUI}.
+ * Remove parent references. + * @function + * @param {String|JQuery} p_idOrJq UI Container data-id or JQuery object + * @example + * self.DestroyAllUIs("container"); + * + * self.DestroyAllUIs($container); + */ + _AbstractComponent.prototype.DestroyAllUIs = function (p_idOrJq) { + var contSelector = typeof p_idOrJq === "string" ? "[data-id=" + p_idOrJq + "]" : p_idOrJq.selector; + var ui; + for (var f=0, F=this.__UIComponents__.length; f < F; f++) { + ui = this.__UIComponents__[f]; + + if (ui.__$Container__.selector === contSelector) { + this.__UIComponents__.splice(f--, 1); + F--; + + ui.__Destroy__(); + ui.$Get().remove(); + } + } + }; + + /** + * Get the component container. + * If the component is a screen, the container is + * set using {@link iris-_AbstractScreen#AddScreen} function. + * Otherwise if the component is a UI, the container is + * set using {@link iris-_AbstractComponent#InstanceUI} function. + * @function + * @example + * + * var screenContainer = self.$Container(); + */ + _AbstractComponent.prototype.$Container = function () { + return this.__$Container__; + }; + + // To override functions + + /** + * Called automatically only once at the creation phase. + * Function to override. + * @function + */ + _AbstractComponent.prototype.Create = function () {}; + + /** + * Called automatically when a screen is showed. + * Function to override. + * @function + */ + _AbstractComponent.prototype.Awake = function () {}; + + /** + * Called automatically when a screen is going to sleep, before {@link iris-_AbstractComponent#Sleep}. + * If return false, the self.Sleep() function is not called. + * @function + */ + _AbstractComponent.prototype.CanSleep = function () { + return true; + }; + + /** + * Called automatically when a screen is hidden. + * Function to override. + * @function + */ + _AbstractComponent.prototype.Sleep = function () {}; + + /** + * Called automatically by {@link iris-_AbstractComponent#DestroyUI}. + * Function to override. + */ + _AbstractComponent.prototype.Destroy = function () {}; + + /** + * @class + * Abstract class for AddOn extending. + * Common AddOn functions and properties. + */ + var _AbstractAddOn = function () { + this.__Components__ = null; + }; + + _AbstractAddOn.prototype = new _Settable(); + + /** + * Add a array of UIs to the AddOn. + * It is called automatically from {@link iris.ApplyAddOn}. + * @param p_uis {Array} Array of UIs + * @function + */ + _AbstractAddOn.prototype.AddAll = function (p_uis) { + for (var f=0, F=p_uis.length; fself.TEMPLATE_REPLACE. + * Use this function before call {@link iris-_AbstractUI.Template}. + * @function + * @example + * self.TemplateMode(self.TEMPLATE_APPEND); + * self.Template("tmpl.html"); + */ + _AbstractUI.prototype.TemplateMode = function (p_mode) { + this.__TemplateMode__ = p_mode; + }; + + /** + * Create the component template. + * Translate multilanguage values, draw parameters, + * create DOM elements and insert into container or replace it. + * + * See {@link iris-_AbstractUI.TemplateMode}. + * @function + * @example + * self.TemplateMode(self.TEMPLATE_APPEND); + * self.Template("tmpl.html", {"age":23}); + */ + _AbstractUI.prototype.Template = function (p_htmlUrl, p_params) { + this.__Template__(p_htmlUrl, p_params, this.__TemplateMode__); + }; + + + /** + * @class + * Abstract class for screen extending. + * Common screen functions and properties. + */ + var _AbstractScreen = function () {}; + + _AbstractScreen.prototype = new _AbstractComponent(); + + /** + * Create the screen template. + * Translate multilanguage values, draw parameters, + * create DOM elements and it is insert into the screen container. + * @function + * @example + * self.Template("tmpl.html", {"name":"Jonh"}); + */ + _AbstractScreen.prototype.Template = function (p_htmlUrl, p_params) { + this.__Template__(p_htmlUrl, p_params, this.TEMPLATE_APPEND); + }; + + /** + * Add a new screen. + * You can navigate to this using iris.Goto. + * See {@link iris.Goto} for more details. + * @function + * @param {JQuery} p_containerId Screen container data-id + * @param {String} p_screenPath Screen URL path + * @param {String} p_jsUrl Screen controller + * @example + * self.AddScreen( + * "screens" + * , "#books/edit" + * , "screen/book_edit.js" + * ); + * + * iris.Goto("#books/edit"); + */ + _AbstractScreen.prototype.AddScreen = function _ScreenAdd (p_containerId, p_screenPath, p_jsUrl) { + var $cont = this.$Get(p_containerId); + + if ( $cont.data("screen_context") === undefined ) { + + // Set a unique screen context id to the screen container + // like: #path/to/screen|containerid + $cont.data("screen_context", this.__Id__ + "|" + p_containerId); + } + + _ScreenUrl[p_screenPath] = p_jsUrl; + _ScreenContainer[p_screenPath] = $cont; + }; + + + function _Deserialize (p_$form, p_data) { + var element, tag, value; + for ( var name in p_data ) { + if ( p_data.hasOwnProperty(name) ) { + element = p_$form.find('[name="' + name + '"]'); + + if ( element.length > 0 ) { + tag = element[0].tagName.toLowerCase(); + value = p_data[name]; + switch (tag) { + case "select": + case"textarea": + $(element).val(value); + break; + case "input": + switch (tag) { + case "checkbox": + if (value) { + element.attr("checked", "checked"); + } + break; + case "radio": + element.filter('[value="' + value + '"]').attr("checked", "checked"); + break; + default: + element.val(value); + } + } + } + } + } + } + + function _Serialize (p_$form) { + var json = {}; + $.map(p_$form.serializeArray(), function(p_obj){ + json[ p_obj.name ] = p_obj.value; + }); + return json; + } + + + /** @namespace Screen management: Add a new screen, ... */ + iris.screen = {}; + + /** @namespace Event management: Add/remove listeners and trigger events. */ + iris.event = {}; + + /** @namespace Application configuration: Load configuration data and environments. */ + iris.config = {}; + + /** @namespace User interface: Work with HTML elements. */ + iris.ui = {}; + + /** @namespace Asynchronous HTTP request and URL base. */ + iris.net = {}; + + /** @namespace Global configurations management */ + iris.global = {}; + + /** @namespace Environment configurations management */ + iris.local = {}; + + /** @namespace Multilanguage : Load translation files, get translated text, ...*/ + iris.lang = {}; + + /** @namespace Various utilities: Date formatting, serialization, ... */ + iris.util = {}; + + /** + * Load the configuration JSON. + * You can use iris without load this file. + * @function + * @param {JSON} config Contains information about environments, global and environment settings, loglevel logs ... + * @example + * iris.config.Load({ + * "environment-default" : "pro" + *,"environments-nocache" : "dev" + * ,"environment": { + * "localhost" : "dev" + * ,"www.example.com" : "pro" + * } + * ,"log": { + * "dev": "debug,warning,error" + * ,"pro" : "debug,error" + * } + * ,"global": { + * "global-variable" : "example" + * } + * ,"local": { + * "local-variable" : { + * "dev" : "example-dev" + * ,"pro" : "example-pro" + * } + * } + * }); + * + */ + iris.config.Load = _ConfigLoad; + + /** + * Set or get the current environment. + * If a configuration file is loaded, iris try set this value using + * the current URL and the defined environments. + * If not match anything use "environment-default" + * The local variables depends of this value. + * @function + * @param {String} [p_env] Environment name (optional) + * @example + * Example: URL=http://localhost:8080/admin + * Configuration file: + * ... + * "environment": { + * "localhost" : "dev" + * ,"www.example.com" : "pro" + * } + * ... + * + * iris.config.Env(); // return "dev" + * + * iris.config.Env("pro"); // set environment to "pro" + */ + iris.config.Env = _GetEnv; + + /** + * Add global configuration values​​. + * If you load a configuration file, automatically load the object "global" ({@link iris.config.Load}). + * See {@link iris.global.Data} for more details. + * @function + * @param {Object} p_hash Object like: { "name" : value, ... } + * @example + * iris.global.Load({"global-variable" : "value"}); + * iris.global.Data("global-variable"); // return "value" + */ + iris.global.Load = _GlobalLoad; + + /** + * Get or set the value of a global configuration variable. + * If label and value are not specified then return an object with all values. + * See {@link iris.global.Load} for more details. + * @function + * @param {String} [p_label] Variable label (optional) + * @param {String} [p_value] Variable value (optional) + * @example + * iris.global.Data("global-variable"); + */ + iris.global.Data = _GlobalData; + + /** + * Add configuration values that depends on current environment. + * If you load a configuration file, automatically load the object "local" ({@link iris.config.Load}). + * See {@link iris.local.Data} for more details. + * @function + * @param {Object} p_hash Object like: { "name" : {"environment" : value, ... }, ... } + * @example + * iris.global.Load({"global-variable" : "value"}); + * iris.global.Data("global-variable"); // return "value" + */ + iris.local.Load = _LocalLoad; + + /** + * Get or set the value of a configuration variable that depends on current environment. + * If label and value are not specified then return an object with all values. + * See {@link iris.local.Load} for more details. + * @function + * @param {String} [p_label] Variable label (optional) + * @param {String} [p_value] Variable value (optional) + * @example + * iris.local.Data({ + * "local-variable" : { + * "dev" : "example-dev" + * ,"pro" : "example-pro" + * } + * }); + * + * // If environemnt="dev" then return "example-dev" + * iris.local.Data("local-variable"); + */ + iris.local.Data = _LocalData; + + /** + * Add translation texts to a locale. + * See {@link iris.lang.Get} for more details. + * @function + * @param {String} p_locale Locale + * @param {Object} p_data Object like { "LABEL" : "value", GROUP : { "LABEL" : "value", ... }, ... } + * @example + * iris.lang.Load( "es-ES" + * ,{ "LABEL":"etiqueta" + * ,{"GROUP":{ + * "NESTED_VALUE" : "valor anidado" + * } + * }); + * + * iris.lang.Get("LABEL"); + * iris.lang.Get("GROUP.NESTED_VALUE"); + */ + iris.lang.Load = _LocaleLoad; + + /** + * Load remote translation texts into a locale. + * @function + * @param {String} p_locale Locale + * @param {String} p_uri URL to load + * @param {Object} p_settings {"success" : function (p_locale) {}, "error" : function (p_locale) {}} + * @example + * iris.lang.LoadFrom( + * "es-ES" + * , "http://example.com/lang" + * , {"success":_OnLangLoad} + * ); + */ + iris.lang.LoadFrom = _LangLoadFrom; + + /** + * Get a translation text according to the Locale. + * You can access to nested values using dot notation. + * See {@link iris.local.Locale} for more details. + * @function + * @param {String} p_label Label + * @example + * iris.lang.Get("LABEL"); + * + * iris.lang.Get("GROUP.LABEL"); + */ + iris.lang.Get = _LangGet; + + /** + * Set or get the current locale. + * @function + * @param {String} [p_locale] Locale (optional) + * @example + * var locale = iris.lang.Locale(); + * iris.lang.Locale("es-ES"); + */ + iris.lang.Locale = _LocaleGet; + + /** + * Safe debug traces. + * @function + * @param {arguments} + * @example + * iris.L("text", variable); + */ + iris.L = _L; + + /** + * Safe debug traces. If debug-level is active for the current environment then print traces. + * See {@link iris.config.Load} for more details. + * @function + * @param {arguments} + * @example + * iris.D("text", variable); + */ + iris.D = _D; + + /** + * Safe warning traces. If warning-level is active for the current environment then print traces. + * @function + * @see {@link iris.config.Load} + * @param {arguments} + * @example + * iris.W("text", variable); + */ + iris.W = _W; + + /** + * Safe error traces. If error-level is active for the current environment then print traces. + * See {@link iris.config.Load} for more details. + * @function + * @param {arguments} + * @example + * iris.E("text", variable); + */ + iris.E = _E; + + /** + * Event fired before do a navigation. + * @example + * iris.event.Subscribe(iris.event.BEFORE_NAVIGATION, _OnBeforeNavigation); + */ + iris.event.BEFORE_NAVIGATION = "iris_before_navigation"; + + /** + * Add an event listener. + * See {@link iris.event.Notify} and {@link iris.event.Remove} for more details. + * @function + * @param {String} p_eventName Event identifier + * @param {Function} f_func Event listener + * @example + * iris.event.Subscribe("user_select", _OnUserSelect); + */ + iris.event.Subscribe = _EventSubscribe; + + /** + * Trigger an event. + * See {@link iris.event.Subscribe} and {@link iris.event.Remove} for more details. + * @function + * @param {String} p_eventName Event identifier + * @param {Object} p_data Event paramater + * @example + * iris.event.Notify( + * "user_select" + * , {"user_id" : 123, "name" : "John"} + * ); + */ + iris.event.Notify = _EventNotify; + + /** + * Remove an event listener. + * See {@link iris.event.Subscribe} and {@link iris.event.Notify} for more details. + * @function + * @param {String} p_eventName Event identifier + * @param {String} f_func Event listener + * @example + * iris.event.Remove("user_select", _OnUserSelect); + */ + iris.event.Remove = _EventRemove; + + /** + * Get or set the application base URL. + * Use the <base > HTML tag if are defined. + * @function + * @param {String} [p_baseUri] URL base (optional) + * @example + * // Current URL = http://www.example.com/admin/example/path?a=1 + * iris.net.BaseUri(); // return http://www.example.com/ + */ + iris.net.BaseUri = _BaseUri; + + /** + * Do an Ajax request. + * Accepts the same parameters as jQuery.ajax() + * @function + * @see JQuery Ajax. + * @example + * iris.net.Ajax( + * { "url" : "/s/myservice" + * , "type" : "GET" + * } + * ); + */ + iris.net.Ajax = _Ajax; + + /** + * Set a URL parameter to be used as cache version control. + * This parameter will be appended to URL string automatically + * when loading static resources. + * @function + * @param {String} p_value Parameter value + */ + iris.net.CacheVersion = _SetCacheVersion; + + /** + * Register a Screen object. + * It must appear at the beginning of the screen file. + * @function + * @param {Function} f_screen Screen class + * @example + * iris.Screen( + * function (self) { + * self.Create = function () { + * } + * + * self.Awake = function (p_params) { + * } + * + * self.Sleep = function () { + * } + * } + * ); + */ + iris.Screen = _CreateScreen; + + /** + * Register an UI object. + * It must appear at the beginning of the screen file. + * @function + * @param {Function} f_ui UI class + * @example + * iris.UI( + * function (self) { + * self.Create = function (p_domAttr, p_settings) { + * } + * + * self.Awake = function (p_params) { + * } + * + * self.Sleep = function () { + * } + * } + * ); + */ + iris.UI = _CreateUI; + + /** + * Set the initial screen. + * This screen is registered as the root screen + * and automatically is shown. + * @param {String} p_jsUrl Screen controller + * @function + * @example + * iris.screen.WelcomeScreen("screen/main.js"); + */ + iris.screen.WelcomeScreen = _WelcomeScreen; + + /** + * Destroy a created screen. + * Free screen and its UIs memory. + * Call in cascade all Sleep() and Destroy() functions for its UI childs. + * @function + * @param {String} p_screenPath Screen URL path + * @example + * iris.screen.Destroy("#books/edit"); + */ + iris.screen.Destroy = _DestroyScreen; + + /** + * Copy all data-* attributes to an object. + * Remove the "data-" prefix from attribute names. + * @function + * @param {JQuery} p_$obj Object to merge + * @example + * var $obj = $("<div data-id='test' data-class='myclass'></div>") + * var params = iris.ui.JqToHash($obj); + * // return: {"id" : "test", "class" : "myclass"} + */ + iris.ui.JqToHash = _JqToHash; + + /** + * Set the object values to a JQuery object. + * @function + * @param {Object} p_hash Object with source values + * @param {JQuery} p_$obj JQuery object target + * @param {String[]} [p_filter] Indicates that values ​​should be copied (optional) + * @example + * iris.ui.HashToJq( + * { "class":"myclass", "other":"other_value" } + * , $obj + * , class"] + * ); // Set the $obj attribute "class" + */ + iris.ui.HashToJq = _HashToJq; + + /** + * Include static resources dynamically. + * The load is synchronous and tracks all the files included to prevent them to be included twice.
+ * You can include:
+ *
    + *
  • CSS files: style files are included by creating a link dynamically in the header of the index page.
  • + *
  • JS files: script files are included by creating a script object dynamically in the header of the index page + * and append the loaded content to it. When including javascript files you must take care of the syntax + * as including javascript file with some syntax error would produce an error when adding it to a script element.
  • + *
+ * @function + * @param {arguments} File paths + * @example + * iris.Include("app/service/myservice.js", "app/css/mycss.css"); + */ + iris.Include = _IncludeFiles; + + /** + * Formats a Date object or timestamp to the specified format and according to the current locale.
+ * You can use the following special characters:

+ * a 'a.m.' or 'p.m.'
+ * A 'AM' or 'PM'
+ * b Month, textual, 3 letters, lowercase. 'jan'
+ * d Day of the month, 2 digits with leading zeros. '01' to '31'
+ * D Day of the week, textual, 3 letters. 'Fri'
+ * F Month, textual, long. 'January'
+ * h Hour, 12-hour format. '01' to '12'
+ * H Hour, 24-hour format. '00' to '23'
+ * i Minutes. '00' to '59'
+ * l Day of the week, textual, long. 'Friday'
+ * m Month, 2 digits with leading zeros. '01' to '12'
+ * M Month, textual, 3 letters. 'Jan'
+ * n Month without leading zeros. '1' to '12'
+ * s Seconds, 2 digits with leading zeros. '00' to '59'
+ * U Seconds since the Unix Epoch (January 1 1970 00:00:00 UTC)
+ * y Year, 2 digits. '99'
+ * Y Year, 4 digits. '1999'
+ * @function + * @param {Date|Timestamp} p_date Date object or timestamp (UNIX timestamp) + * @param {String} [p_format] Format string (optional) + * @example + * iris.util.DateFormat(new Date(),"ymd"); + * iris.util.DateFormat("1331954654564","d/m/y h:i:s"); // 17/03/12 04:24:14 + * iris.util.DateFormat(1331954654564); + */ + iris.util.DateFormat = _DateFormat; + + + /** + * Formats a Number or String to Currency using the current locale defined at {@link iris.Regional}
+ * @function + * @param {Number|String} p_value Number or String number + * @example + * regional = en-US + * iris.util.Currency(1234.56); -> $ 1,234.56 + * iris.util.Currency("123456789"); -> $ 123,456,789 + * regional = es-ES + * iris.util.Currency(1234.56); -> 1,234.56 € + * iris.util.Currency("123456789"); -> 123,456,789 € + */ + iris.util.Currency = _ParseCurrency; + + + /** + * Fill all form component with data. + * @function + * @param p_$form {JQuery Object} Form target + * @param p_data {Object} Object data source + * @example + * var data = {"name":"Jonh", "surname": "Doe"}; + * iris.util.Deserialize($form, data); + */ + iris.util.Deserialize = _Deserialize; + + /** + * Serialize a form data to Object. + * @function + * @param p_$form + * @example + * var data = iris.util.Serialize($form); + */ + iris.util.Serialize = _Serialize; + + /** + * Navigate to a screen. + * The screen must be previously added using {@link iris-_AbstractScreen#AddScreen}.
+ * You can send parameters to the target screen as ... /screen?param1=value1¶m2=value2/ ..., + * remember apply encodeURIComponent() to the parameter values.
+ * @function + * @param p_hashUri {String} Hash URL + * @example + * + * iris.Goto("#home/section/subsection"); + * + * // Call with screen parameters + * iris.Goto("#home/section?id=5&name=example%20name/subsection"); + * + * // Remember encode param values + * var email = encodeURIComponent("user@example.com"); + * iris.Goto("#home/section?email=" + email); + */ + iris.Goto = _Goto; + + /** + * Register a AddOn object. + * It must appear at the beginning of the AddOn file. + * @function + * @param {Function} f_addOn AddOn Class + * @example + * iris.AddOn( + * function (self) { + * self.Create = function ( p_uis ) { + * } + * ... + * } + * ); + */ + iris.AddOn = _CreateAddOn; + + /** + * Apply a AddOn to a group of UI components or single UI. + * @function + * @param p_id {String} AddOn identifier + * @param p_uis {Object|Array} UI Component/s + * @example + * var customUI = self.InstanceUI("input", "input.js"); + * iris.ApplyBE("validator.js", customUI); + * + * var otherCustomUI = self.InstanceUI("input", "input.js"); + * iris.ApplyAddOn("validator.js", [customUI, otherCustomUI]); + * + */ + iris.ApplyAddOn = _ApplyAddOn; + + /** + * Specify a new regional or change the actuals regionals to format dates and currencies. + * You must set a valid regional object with all properties: 'dayNames', 'monthNames', etc...
+ * Iris has two predefined regionals: + *
    "en-US" : {
+     *         dayNames : ["Sunday","Monday","Tuesday"
+     *                ,"Wednesday","Thursday","Friday","Saturday"]
+     *        ,monthNames : ["January","February","March"
+     *                ,"April","May","June","July"
+     *                ,"August","September","October"
+     *                ,"November","December"]
+     *        ,dateFormat : "m/d/Y h:i:s"
+     *        ,currency : {
+     *             formatPos : "$ n"
+     *            ,formatNeg : "($ n)"
+     *            ,decimal : "."
+     *            ,thousand : ","
+     *            ,precision : 2
+     *        }
+     *    }
+     *    
+     *    "es-ES" : {
+     *         dayNames : ["Domingo","Lunes","Martes"
+     *            ,"Miércoles","Jueves","Viernes","Sábado"]
+     *        ,monthNames : ["Enero","Febrero","Marzo"
+     *            ,"Abril","Mayo","Junio","Julio","Agosto"
+     *            ,"Septiembre","Octubre","Noviembre","Diciembre"]
+     *        ,dateFormat : "d/m/Y H:i:s"
+     *        ,currency : {
+     *             formatPos : "n"
+     *            ,formatNeg : "-n"
+     *            ,decimal : ","
+     *            ,thousand : "."
+     *            ,precision : 2
+     *        }
+     *    }
+ * @function + * @param p_locale {String} Locale identifier + * @param p_regional {Object} Regional data + * @example + * iris.Regional("custom-es_ES", { + * dayNames : ["D","L","M","M","J","V","S"] + * ,monthNames : ["Ene","Feb","Mar","Abr","May","Jun" + * ,"Jul","Ago","Sep","Oct","Nov","Dic"] + * ,dateFormat : "d/m/Y" + * ,currency : { + * formatPos : "n" + * ,formatNeg : "-n" + * ,decimal : "," + * ,thousand : "." + * ,precision : 2 + * } + * } + */ + iris.Regional = _AddRegional; + + + _Init(); + +})(jQuery); diff --git a/dist/iris.min.js b/dist/iris.min.js new file mode 100644 index 0000000..c80e4eb --- /dev/null +++ b/dist/iris.min.js @@ -0,0 +1,4 @@ +/*! Iris - v0.5.0 - 2012-11-17 +* https://github.com/iris-js/iris.git +* Copyright (c) 2012 Iris; Licensed New-BSD */ +var iris={event:{},config:{},net:{},global:{},local:{},lang:{},util:{}};(function(e){function C(){typeof jQuery=="undefined"?M("jQuery "+n+"+ previous load required"):e().jqueryt.length)for(u=0;u0?t[0].attributes.href.value:"/",b=document.location.protocol+"//"+document.location.host+t}return b}function F(t){return e.ajax(t)}function I(n,r,i,s){var o={url:n,dataType:r,async:!1,cache:S,success:i,error:s};S&&t!==undefined&&(o.data="_="+t),e.ajax(o)}function q(e){t=e}function R(){for(var e=0,t=arguments.length;e-1){var n=document.createElement("link");n.rel="stylesheet",n.type="text/css",n.href=t,E.appendChild(n)}else{var r=e.lastIndexOf(".html")>-1;I(t,r?"html":"text",function(t){w=e;if(r)g[e]=rt(t);else{var n=document.createElement("script");n.language="javascript",n.type="text/javascript",n.text=t,E.appendChild(n)}},function(e){delete g[t],M(e.status,"Error loading file '"+t+"'")})}}}function z(t){if(t){e.extend(d,t),X(d.global);var n=W();if(d.log){var r=d.log[n],s=r.split(",");for(var o=0;o-1){r=d.environment[t];break}r||(r="pro"),s="["+r+"]"}return r}r=e}function X(t){return e.extend(c,t),c}function V(e,t){if(!e||t===undefined)return e?c[e]:c;c[e]=t}function $(t){return e.extend(h,t),h}function J(e,t){if(!e||t===undefined)return e?h[e][W()]:h;h[e][W()]=t}function K(e,t){var n=m[e];if(n)for(var r=0,i=n.length;r-1){var r=t.split("."),i,s=r.length;for(i=0;i=0?t.formatPos:t.formatNeg,i=n%1,s=String(Math.abs(n-i));i=String(Math.abs(i).toFixed(t.precision)),i=i.substr(2);for(var o=0;o12?"p.m.":"a.m.";case"A":return t.getHours()>12?"PM":"AM";case"U":return Math.floor(t.getTime()*.001);default:return e}}function xt(e,t){!t.hasOwnProperty("dayNames")||!t.hasOwnProperty("monthNames")||!t.hasOwnProperty("dateFormat")||!t.hasOwnProperty("currency")||!t.currency.hasOwnProperty("formatPos")||!t.currency.hasOwnProperty("formatNeg")||!t.currency.hasOwnProperty("decimal")||!t.currency.hasOwnProperty("thousand")||!t.currency.hasOwnProperty("precision")?iris.E("Regional '"+e+"' has invalid format ",t):St[e]=t}function At(t,n){var r,i,s;for(var o in n)if(n.hasOwnProperty(o)){r=t.find('[name="'+o+'"]');if(r.length>0){i=r[0].tagName.toLowerCase(),s=n[o];switch(i){case"select":case"textarea":e(r).val(s);break;case"input":switch(i){case"checkbox":s&&r.attr("checked","checked");break;case"radio":r.filter('[value="'+s+'"]').attr("checked","checked");break;default:r.val(s)}}}}}function Ot(t){var n={};return e.map(t.serializeArray(),function(e){n[e.name]=e.value}),n}var t,n=1.5,r=null,i={error:!0},s="",o={},u={},a={},f={},l="",c={},h={},p=null,d={},v={},m={},g={},y={},b="",w,E=e("head").get(0),S=!0,x,T=!1,N=!1,St={"en-US":{dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],dateFormat:"m/d/Y h:i:s",currency:{formatPos:"n",formatNeg:"(n)",decimal:".",thousand:",",precision:2}},"es-ES":{dayNames:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],monthNames:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],dateFormat:"d/m/Y H:i:s",currency:{formatPos:"n",formatNeg:"-n",decimal:",",thousand:".",precision:2}}},Tt=function(){this.__Setting__=null};Tt.prototype.Settings=function(t){return e.extend(this.__Setting__,t)},Tt.prototype.Setting=function(e,t){if(t===undefined)return this.__Setting__.hasOwnProperty(e)||iris.W("The setting ",e," is not in ",this.__Setting__,this),this.__Setting__[e];this.__Setting__[e]=t};var Nt=function(){this.TEMPLATE_APPEND="append",this.TEMPLATE_REPLACE="replace",this.TEMPLATE_PREPEND="prepend",this.__$Tmpl__=null,this.__Id__=null,this.__UIComponents__=null,this.__$Container__=null,this.__IsSleeping__=null,this.__FileJs__=null,this.__FileTmpl__=null,this.__Element__=null};Nt.prototype=new Tt,Nt.prototype.__Sleep__=function(){for(var e=0,t=this.__UIComponents__.length;e1&&iris.E("Template '"+t+"' must have only one root node");switch(r){case this.TEMPLATE_APPEND:this.__$Container__.append(s);break;case this.TEMPLATE_REPLACE:this.__$Container__.replaceWith(s);break;case this.TEMPLATE_PREPEND:this.__$Container__.prepend(s);break;default:iris.E("Unknown template mode '"+r+"'")}},Nt.prototype.__CheckTmpl__=function(){if(this.__$Tmpl__===null)return iris.E("You must set a template using self.Template() in '"+this.__FileJs__+"'"),undefined},Nt.prototype.Show=function(){this.__CheckTmpl__(),this.__$Tmpl__.show()},Nt.prototype.Hide=function(){this.__CheckTmpl__(),this.__$Tmpl__.hide()},Nt.prototype.$Get=function(e){this.__CheckTmpl__();if(e){if(!this.__Element__.hasOwnProperty(e)){var t="[data-id="+e+"]",n=this.__$Tmpl__.filter(t),r=null;if(n.length>0)r=n;else{var i=this.__$Tmpl__.find(t);i.size()>0&&(r=i)}if(r===null)return iris.E("[data-id="+e+"] not found in '"+this.__FileTmpl__+"' used by '"+this.__FileJs__+"'"),undefined;if(r.size()>1)return iris.E("[data-id="+e+"] must be unique in '"+this.__FileTmpl__+"' used by '"+this.__FileJs__+"'"),undefined;this.__Element__[e]=r}return this.__Element__[e]}return this.__$Tmpl__},Nt.prototype.InstanceUI=function(e,t,n,r){var i=this.$Get(e);if(i.size()===1){var s=lt(i,i.data("id"),t,n,r);return this.__UIComponents__[this.__UIComponents__.length]=s,s}},Nt.prototype.DestroyUI=function(e){for(var t=0,n=this.__UIComponents__.length;t', + meta: { + banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' + + '<%= grunt.template.today("yyyy-mm-dd") %>\n' + + '<%= pkg.homepage ? "* " + pkg.homepage + "\n" : "" %>' + + '* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' + + ' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */' + }, + concat: { + dist: { + src: ['', '.js>'], + dest: 'dist/<%= pkg.name %>.js' + } + }, + min: { + dist: { + src: ['', ''], + dest: 'dist/<%= pkg.name %>.min.js' + } + }, + qunit: { + files: ['test/**/*.html'] + }, + lint: { + files: ['grunt.js', 'src/**/*.js', 'test/**/*.js'] + }, + watch: { + files: '', + tasks: 'lint qunit' + }, + jshint: { + options: { + curly: true, + eqeqeq: true, + immed: true, + latedef: true, + newcap: true, + noarg: true, + sub: true, + undef: true, + boss: true, + eqnull: true, + browser: true + }, + globals: { + jQuery: true + } + }, + uglify: {} + }); + + // Default task. + grunt.registerTask('default', 'lint qunit concat min'); + +}; diff --git a/iris-example/pom.xml b/iris-example/pom.xml deleted file mode 100644 index 7b3c5c7..0000000 --- a/iris-example/pom.xml +++ /dev/null @@ -1,31 +0,0 @@ - - 4.0.0 - - iris-example - com.igzcode.js.iris - 3.6-SNAPSHOT - jar - IRIS Example App - IRIS Example App - - - - - org.mortbay.jetty - maven-jetty-plugin - 6.1.26 - - 5 - /iris/example - - - 8080 - - - - - - - - \ No newline at end of file diff --git a/iris-example/src/main/webapp/WEB-INF/web.xml b/iris-example/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index a4dfb56..0000000 --- a/iris-example/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - index.html - - - diff --git a/iris-example/src/main/webapp/css/example.css b/iris-example/src/main/webapp/css/example.css deleted file mode 100644 index c1f0001..0000000 --- a/iris-example/src/main/webapp/css/example.css +++ /dev/null @@ -1,103 +0,0 @@ - -* { - font-family: "Arial", sans-serif; - color: #333; -} - - -a { - color: #15C; -} - -pre { -padding: 6px 10px; -background-color: #FAFAFA; -border: 1px solid #BBB; -overflow: auto; -font-family: Courier New, monospace; -line-height: 1.5; -} - -code { - font-family: Courier New, monospace; -} - -.btn { - display: inline-block; - border: 1px solid #026EA3; - background: #009ADF; - border-radius: 3px; - -ms-border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - -khtml-border-radius: 3px; - align: center; - padding: 8px 6px; -} - -.btn span { - font-size: 0.8em; - font-weight: bold; - color: #FFFFFF; - white-space:nowrap; -} - -.selected { - border: 4px solid #026EA3; -} - -.validation-error { - border: 1px solid #f00; -} - -.checkbox { - -} - -.checkbox-icon { - width:24px; - height:24px; - background: url("../pix/checkbox.png") 0 0; - display: inline-block; -} - -.checkbox-on { - background-position: 24px 0; -} - -.checkbox-off { - background-position: 0 0; -} - -.menu { - list-style: none; - margin: 0; - padding: 0; - border: none; -} - -.menu li { - border-bottom: 1px solid #90bade; - padding: 10px; -} - -.menu li a { - border-left: 10px solid #5ba3e0; - text-decoration: none; - padding-left: 10px; -} - -.menu li a:hover { - background-color: #2175bc; - color: #fff; -} - - -.test { - padding-bottom:10px; - border-bottom: 1px solid #ccc; -} - -.test span { - color: green; -} \ No newline at end of file diff --git a/iris-example/src/main/webapp/example/addon/radios.js b/iris-example/src/main/webapp/example/addon/radios.js deleted file mode 100644 index 7edae24..0000000 --- a/iris-example/src/main/webapp/example/addon/radios.js +++ /dev/null @@ -1,76 +0,0 @@ -/** - * Makes a set of buttons act as a radio buttons allowing only one of them to be pressed. - * - * @appliesTo button.js - * @example iris.ApplyAddOn("radios.js", [_ButtonOpt1, _ButtonOpt2, _ButtonOpt3]); - * @adds - * - Press( state ) -> Set - */ -iris.AddOn( - - function( self ) { - - self.Settings({ - "name" : "default" - }); - - var _DePressAll = function() { - for ( var f=0, F=self.Size(); f validate that the DOM element ( el.val() ) is not empty - * - numeric -> validate that the DOM element ( el.val() ) is numeric - * @Public - * - IsValid -> returns a boolean indicating when all the components are valid or not - * - GetErrorMessages -> return an array with all error messages generated by components and DOM elements - * - * If you want to add a UI to a validator, you have to consider: - * - The UI must have a public Validate method. If this method doesn't return TRUE or dosen't exists, the AddOn considers that the UI doesn't validate. - * In this method you can highlight in red or whatever you want to visual represent the validation error in the UI. - * - The UI can have a public ValidateError that return the error literal. If not, the error generates without a description. - * If you want to validate a DOM element (normally a input), you have to consider: - * - The DOM element must have a data-validate attribute with any validation type supported by this AddOn. If not, the element always pass the validation - * - If the DOM element have a data-validate-name attribute, its value will be appended in the error description - * - If the DOM element doesn't validate it will receive the class _ValidationErrorClass - * - */ -iris.AddOn( - - function( self ) { - - var _ErrorMessages = [] - , _ValidationErrorClass = "validation-error" - ; - - // LyfeCycle - self.Create = function() { - iris.D("AddOn Validator Applied"); - }; - - function _IsValid(){ - _ErrorMessages = []; - - var allValid = true, el; - for ( var f=0, F=self.Size(); f < F; f++ ) { - el = self.Get(f); - - if( _IsUiComponent( el ) ){ - if( el.hasOwnProperty("Validate") ){ - if( el.Validate() !== true ){ - allValid = false; - _ErrorMessages[_ErrorMessages.length] = el.hasOwnProperty("ValidateError") ? el.ValidateError() : ""; - } - } else { - allValid = false; - _ErrorMessages[_ErrorMessages.length] = el.hasOwnProperty("ValidateError") ? el.ValidateError() : ""; - } - } else { - - el.removeClass( _ValidationErrorClass ); - if( el.data("validate") ){ - var validations = el.data("validate").split(" "); - - for( var g=0, G=validations.length; g -

AddOns

- -

Radios

-

Makes a set of buttons act as a radio buttons allowing only one of them to be pressed:

- - - - - -
- - - \ No newline at end of file diff --git a/iris-example/src/main/webapp/example/screen/example_addon_radios.js b/iris-example/src/main/webapp/example/screen/example_addon_radios.js deleted file mode 100644 index ade2637..0000000 --- a/iris-example/src/main/webapp/example/screen/example_addon_radios.js +++ /dev/null @@ -1,30 +0,0 @@ -iris.Screen(function(self) { - - var _$Msg; - - self.Create = function() { - self.Template("example/screen/example_addon_radios.html"); - - var btn1 = self.InstanceUI("button_one", "example/ui/button.js", {"onClick" : _One}); - var btn2 = self.InstanceUI("button_two", "example/ui/button.js", {"onClick" : _Two}); - var btn3 = self.InstanceUI("button_three", "example/ui/button.js", {"onClick" : _Three}); - - var beRadios = iris.ApplyAddOn("example/addon/radios.js", [btn1, btn2, btn3], {"name":"example_radios"}); - - _$Msg = self.$Get("msg"); - - } - - function _One () { - _$Msg.text("Button one pressed"); - } - - function _Two () { - _$Msg.text("Button two pressed"); - } - - function _Three () { - _$Msg.text("Button three pressed"); - } - -}); \ No newline at end of file diff --git a/iris-example/src/main/webapp/example/screen/example_addon_validation.html b/iris-example/src/main/webapp/example/screen/example_addon_validation.html deleted file mode 100644 index f356265..0000000 --- a/iris-example/src/main/webapp/example/screen/example_addon_validation.html +++ /dev/null @@ -1,17 +0,0 @@ -
-
-

AddOns

- -

Validation

- - - - - -

-
- -
- -
-
\ No newline at end of file diff --git a/iris-example/src/main/webapp/example/screen/example_addon_validation.js b/iris-example/src/main/webapp/example/screen/example_addon_validation.js deleted file mode 100644 index 7b8582a..0000000 --- a/iris-example/src/main/webapp/example/screen/example_addon_validation.js +++ /dev/null @@ -1,48 +0,0 @@ -iris.Screen( - function (self) { - - var - //template elements - _$InputRequired - , _$InputRequired2 - , _$InputNumeric - , _$ValidationMsgs - //AddOns - ,_Validator - ; - - self.Create = function () { - - self.Template( "example/screen/example_addon_validation.html" ); - - _$InputRequired = self.$Get("validate_required_name"); - _$InputRequired2 = self.$Get("validate_required_surname"); - _$InputNumeric = self.$Get("validate_numeric_age"); - _$ValidationMsgs = self.$Get("validation-msgs"); - - self.InstanceUI( - "validate_button" - , "example/ui/button.js" - , {"onClick" : _Validate } - ); - - _Validator = iris.ApplyAddOn( "example/addon/validator.js", [_$InputRequired, _$InputRequired2, _$InputNumeric]); - }; - - function _Validate(){ - _$ValidationMsgs.html(""); - - if ( !_Validator.IsValid() ){ - var msg = "Validation errors:
"; - msg += _Validator.ErrorMessages().join("
"); - _$ValidationMsgs.html(msg); - return false; - } else { - _$ValidationMsgs.html("Form OK!"); - return true; - } - - } - - } -); \ No newline at end of file diff --git a/iris-example/src/main/webapp/example/screen/example_destroy.html b/iris-example/src/main/webapp/example/screen/example_destroy.html deleted file mode 100644 index dcd921a..0000000 --- a/iris-example/src/main/webapp/example/screen/example_destroy.html +++ /dev/null @@ -1,58 +0,0 @@ -
-

Destroy a UI child from a parent container

- -

The list item creation is explained here

-

Example template:

-
<div>
-    <button data-id="btn_create">Create a new UI</button>
-
-    <br>UI Index:
-    <input data-id='idx' type='number' value='0' />
-    <button data-id='btn_destroy'>Destroy</button>
-
-    <br>Container:
-    <div data-id='container'></div>
-</div>
-

All UIs are registered into _UIs Array:

-
iris.Screen(function(self) {
-    var _UIs = []
-    ,   _$InputIdx
-    ;
-    
-    self.Create = function() {
-        self.Template("example/screen/example_destroy.html");
-
-        self.$Get("btn_create").click(_Create);
-        self.$Get("btn_destroy").click(_DestroyUI);
-
-        _$InputIdx = self.$Get("idx");
-        
-    }
-
-    function _Create() {
-        _UIs.push(
-            self.InstanceUI("container", "example/ui/example.js")
-        );
-    }
-
-    function _DestroyUI() {
-        var idx = _$InputIdx.val();
-        self.DestroyUI(_UIs[idx]);
-        _UIs.splice(idx, 1);
-    }
-});
- -

Try it:

- -

- -

-
-

- UI Index: - - -

-
Container: -
-
\ No newline at end of file diff --git a/iris-example/src/main/webapp/example/screen/example_destroy.js b/iris-example/src/main/webapp/example/screen/example_destroy.js deleted file mode 100644 index c75b3e8..0000000 --- a/iris-example/src/main/webapp/example/screen/example_destroy.js +++ /dev/null @@ -1,27 +0,0 @@ -iris.Screen(function(self) { - var _UIs = [] - , _$InputIdx - ; - - self.Create = function() { - self.Template("example/screen/example_destroy.html"); - - self.$Get("btn_create").click(_Create); - self.$Get("btn_destroy").click(_DestroyUI); - - _$InputIdx = self.$Get("idx"); - - } - - function _Create() { - _UIs.push( - self.InstanceUI("container", "example/ui/example.js") - ); - } - - function _DestroyUI() { - var idx = _$InputIdx.val(); - self.DestroyUI(_UIs[idx]); - _UIs.splice(idx, 1); - } -}); \ No newline at end of file diff --git a/iris-example/src/main/webapp/example/screen/example_destroy_all.html b/iris-example/src/main/webapp/example/screen/example_destroy_all.html deleted file mode 100644 index 99ff8ae..0000000 --- a/iris-example/src/main/webapp/example/screen/example_destroy_all.html +++ /dev/null @@ -1,15 +0,0 @@ -
-

Destroy all UI childs from a parent container

-

The list item creation is explained here

-

The UI generated will be append to the container with data-id "uis".

-
self.DestroyAllUIs("uis");
- - -

Try it:

- - - - -
Container: -
-
\ No newline at end of file diff --git a/iris-example/src/main/webapp/example/screen/example_destroy_all.js b/iris-example/src/main/webapp/example/screen/example_destroy_all.js deleted file mode 100644 index b03bc7b..0000000 --- a/iris-example/src/main/webapp/example/screen/example_destroy_all.js +++ /dev/null @@ -1,18 +0,0 @@ -iris.Screen(function(self) { - self.Create = function() { - self.Template("example/screen/example_destroy_all.html"); - - self.$Get("btn_create").click(_Create); - self.$Get("btn_destroy_all").click(_DestroyAllUIs); - } - - function _Create() { - self.InstanceUI("uis", "example/ui/example.js", { - "count" : self.__UIComponents__.length - }); - } - - function _DestroyAllUIs() { - self.DestroyAllUIs("uis"); - } -}); \ No newline at end of file diff --git a/iris-example/src/main/webapp/example/screen/example_instance.html b/iris-example/src/main/webapp/example/screen/example_instance.html deleted file mode 100644 index fd81ed2..0000000 --- a/iris-example/src/main/webapp/example/screen/example_instance.html +++ /dev/null @@ -1,18 +0,0 @@ -
-

Replace a template element with a new UI:

- -

The container will be replaced by the UI generated.

-
self.InstanceUI("container_to_replace", "example/ui/example_basic.js");
- -

Template:

-
<div>
-  <div data-id='container_to_replace'>Container content</div>
-<div>
- -

To append UIs instead of replace set the Template Mode to self.TEMPLATE_APPEND

- -

Try it:

- - -
Container content
-
\ No newline at end of file diff --git a/iris-example/src/main/webapp/example/screen/example_instance.js b/iris-example/src/main/webapp/example/screen/example_instance.js deleted file mode 100644 index 4c41720..0000000 --- a/iris-example/src/main/webapp/example/screen/example_instance.js +++ /dev/null @@ -1,12 +0,0 @@ -iris.Screen(function(self) { - - self.Create = function() { - self.Template("example/screen/example_instance.html"); - self.$Get("btn_create").click(_Create); - } - - function _Create() { - self.InstanceUI("container", "example/ui/example_basic.js"); - self.$Get("btn_create").remove(); - } -}); \ No newline at end of file diff --git a/iris-example/src/main/webapp/example/screen/example_list.html b/iris-example/src/main/webapp/example/screen/example_list.html deleted file mode 100644 index f0da198..0000000 --- a/iris-example/src/main/webapp/example/screen/example_list.html +++ /dev/null @@ -1,25 +0,0 @@ -
-

Create a group of Instance UIs and add all them to a parent component

-

The UI generated will be append to the container.

-
self.InstanceUI("container_to_append", "example/ui/example.js");
- -

Template:

-
<div>
-  <div data-id='container_to_append'>List container content</div>
-<div>
- -

Important: The child UI must have its Template Mode set to self.TEMPLATE_APPEND

-
iris.UI(function (self) {
-    self.Create = function() {
-        self.TemplateMode(self.TEMPLATE_APPEND);
-        self.Template("example/ui/example.html");
-    }
-}
-

The default value of Template Mode is self.TEMPLATE_REPLACE

- -

Try it:

- - - -
List container content
-
\ No newline at end of file diff --git a/iris-example/src/main/webapp/example/screen/example_list.js b/iris-example/src/main/webapp/example/screen/example_list.js deleted file mode 100644 index 923bbbb..0000000 --- a/iris-example/src/main/webapp/example/screen/example_list.js +++ /dev/null @@ -1,14 +0,0 @@ -iris.Screen(function(self) { - var _Count = 0; - - self.Create = function() { - self.Template("example/screen/example_list.html"); - self.$Get("btn_create").click(_Create); - } - - function _Create() { - self.InstanceUI("container", "example/ui/example.js", { - "count" : _Count++ - }); - } -}); \ No newline at end of file diff --git a/iris-example/src/main/webapp/example/screen/example_nested_uis.html b/iris-example/src/main/webapp/example/screen/example_nested_uis.html deleted file mode 100644 index 9147ec3..0000000 --- a/iris-example/src/main/webapp/example/screen/example_nested_uis.html +++ /dev/null @@ -1,32 +0,0 @@ -
- -

Nested UIs

- -

UI Code:

-
iris.UI(function (self) {
-
-    self.Create = function() {
-        
-        this.TemplateMode(this.TEMPLATE_APPEND);
-        this.Template("example/ui/nested.html");
-
-        self.$Get("create_ui").click(_CreateUI);
-
-    };
-    
-    function _CreateUI () {
-        self.InstanceUI("uis", "example/ui/nested.js");
-    }
-
-});
- -

Template:

-
<div style='border: 1px solid #000;margin:10px;'>
-    <p data-id='label'>Nested UI</p>
-    <button data-id="create_ui">Create a new UI</button>
-</div>
- - Try it: -
- -
\ No newline at end of file diff --git a/iris-example/src/main/webapp/example/screen/example_nested_uis.js b/iris-example/src/main/webapp/example/screen/example_nested_uis.js deleted file mode 100644 index 8712fca..0000000 --- a/iris-example/src/main/webapp/example/screen/example_nested_uis.js +++ /dev/null @@ -1,10 +0,0 @@ -iris.Screen(function(self) { - - self.Create = function() { - - self.Template("example/screen/example_nested_uis.html"); - - self.InstanceUI("uis", "example/ui/nested.js"); - } - -}); \ No newline at end of file diff --git a/iris-example/src/main/webapp/example/screen/example_screen_params.html b/iris-example/src/main/webapp/example/screen/example_screen_params.html deleted file mode 100644 index 78d6a95..0000000 --- a/iris-example/src/main/webapp/example/screen/example_screen_params.html +++ /dev/null @@ -1,20 +0,0 @@ -
-

Screen Parameters

- -

A quick example to explain how to send parameters to screens.

- -

- Parameter value: - - -

- -
- 1. Using iris.Goto() to visit a child screen and sending a example parameter: -

-		

Important: The parameter value must be encoded using encodeURIComponent()

-
- -
Screen Container
- -
\ No newline at end of file diff --git a/iris-example/src/main/webapp/example/screen/example_screen_params.js b/iris-example/src/main/webapp/example/screen/example_screen_params.js deleted file mode 100644 index 29acde8..0000000 --- a/iris-example/src/main/webapp/example/screen/example_screen_params.js +++ /dev/null @@ -1,28 +0,0 @@ -iris.Screen(function(self) { - - var _$CodeExample - , _$ParamValue - ; - - self.Create = function() { - self.Template("example/screen/example_screen_params.html"); - - _$ParamValue = self.$Get("input_param_value"); - _$CodeExample = self.$Get("code_example"); - - self.$Get("btn_send").click(_Send); - self.$Get("step1").hide(); - - self.AddScreen("screens", "#screen-parameters/child-screen", "example/screen/example_screen_params_child.js"); - } - - function _Send () { - self.$Get("step1").show(); - - var uri = "#screen-parameters/child-screen?parameter=" + encodeURIComponent(_$ParamValue.val()); - - _$CodeExample.text("iris.Goto('" + uri + "');"); - - iris.Goto(uri); - } -}); \ No newline at end of file diff --git a/iris-example/src/main/webapp/example/screen/example_screen_params_child.html b/iris-example/src/main/webapp/example/screen/example_screen_params_child.html deleted file mode 100644 index 0ab1a0d..0000000 --- a/iris-example/src/main/webapp/example/screen/example_screen_params_child.html +++ /dev/null @@ -1,22 +0,0 @@ -
-

Child Screen

- -

2. This is the child screen what receives the parameter value from self.Awake(p_params) and print it:

- -
...
-self.Awake = function(p_params) {
-	self.$Get("screen_param").text(p_params["parameter"]);
-}
-...
- -

Its template:

-
<div>
-	...
-	Screen Parameter = <span data-id='screen_param' style='color:green;'></span></p>
-	...
-</div>
- -

Result:

-

Screen Parameter =

- -
\ No newline at end of file diff --git a/iris-example/src/main/webapp/example/screen/example_screen_params_child.js b/iris-example/src/main/webapp/example/screen/example_screen_params_child.js deleted file mode 100644 index c01a4ba..0000000 --- a/iris-example/src/main/webapp/example/screen/example_screen_params_child.js +++ /dev/null @@ -1,10 +0,0 @@ -iris.Screen(function(self) { - - self.Create = function() { - self.Template("example/screen/example_screen_params_child.html"); - } - - self.Awake = function(p_params) { - self.$Get("screen_param").text(p_params["parameter"]); - } -}); \ No newline at end of file diff --git a/iris-example/src/main/webapp/example/screen/example_template_params.html b/iris-example/src/main/webapp/example/screen/example_template_params.html deleted file mode 100644 index fa61783..0000000 --- a/iris-example/src/main/webapp/example/screen/example_template_params.html +++ /dev/null @@ -1,78 +0,0 @@ -
-

Template Parameters

- -

You can see a real example in this page:

- -

1. Use self.Template(p_htmlUri, p_params)

-
-self.Create = function() {
-	var params = {
-		 "price" : 1499.99
-		,"date" : new Date()
-		,"object" : {
-			"property" : "This is a object property value"
-		}
-	};
-	self.Template("example/screen/example_template_params.html", params);
-}
- -

2. See how these parameters are printed:

- -
-

Number

-
## price ##
- - ##price## - -
- -
-

Currency

-
## price|currency ##
- - ##price|currency## - -
- -
-

Date

-
## date|date ##
- - ##date|date## - -
- -
-

Custom Date

-
## date|date(y - m - d) ##
- - ##date|date(y - m - d)## - -
- -
-

Object Property

-
## object.property ##
- - ##object.property## - -
- - -

3. The current Locale is es-ES therefore the used regional format is:

- -
{
-	 dayNames : ["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"]
-	,monthNames : ["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"]
-	,dateFormat : "d/m/Y H:i:s"
-	,currency : {
-		 formatPos : "n"
-		,formatNeg : "-n"
-		,decimal : ","
-		,thousand : "."
-		,precision : 2
-	}
-}
- -

You can create a custom Regional using iris.Regional().

-
\ No newline at end of file diff --git a/iris-example/src/main/webapp/example/screen/example_template_params.js b/iris-example/src/main/webapp/example/screen/example_template_params.js deleted file mode 100644 index 40d4538..0000000 --- a/iris-example/src/main/webapp/example/screen/example_template_params.js +++ /dev/null @@ -1,15 +0,0 @@ -iris.Screen(function(self) { - - self.Create = function() { - - var params = { - "price" : 1499.99 - ,"date" : new Date() - ,"object" : { - "property" : "This is a object property value" - } - }; - - self.Template("example/screen/example_template_params.html", params); - } -}); \ No newline at end of file diff --git a/iris-example/src/main/webapp/example/screen/main.html b/iris-example/src/main/webapp/example/screen/main.html deleted file mode 100644 index 9f0b576..0000000 --- a/iris-example/src/main/webapp/example/screen/main.html +++ /dev/null @@ -1,40 +0,0 @@ - \ No newline at end of file diff --git a/iris-example/src/main/webapp/example/screen/main.js b/iris-example/src/main/webapp/example/screen/main.js deleted file mode 100644 index 9324713..0000000 --- a/iris-example/src/main/webapp/example/screen/main.js +++ /dev/null @@ -1,19 +0,0 @@ -iris.Screen(function(self) { - self.Create = function() { - self.Template("example/screen/main.html"); - - self.AddScreen("screens", "#destroy", "example/screen/example_destroy.js"); - self.AddScreen("screens", "#destroy-all", "example/screen/example_destroy_all.js"); - self.AddScreen("screens", "#instance", "example/screen/example_instance.js"); - self.AddScreen("screens", "#list", "example/screen/example_list.js"); - self.AddScreen("screens", "#addon-radios", "example/screen/example_addon_radios.js"); - self.AddScreen("screens", "#addon-validation", "example/screen/example_addon_validation.js"); - self.AddScreen("screens", "#template-parameters", "example/screen/example_template_params.js"); - self.AddScreen("screens", "#screen-parameters", "example/screen/example_screen_params.js"); - self.AddScreen("screens", "#nested-uis", "example/screen/example_nested_uis.js"); - - if ( !document.location.hash ) { - iris.Goto("#instance"); - } - } -}); \ No newline at end of file diff --git a/iris-example/src/main/webapp/example/ui/button.html b/iris-example/src/main/webapp/example/ui/button.html deleted file mode 100644 index a82b880..0000000 --- a/iris-example/src/main/webapp/example/ui/button.html +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/iris-example/src/main/webapp/example/ui/button.js b/iris-example/src/main/webapp/example/ui/button.js deleted file mode 100644 index c251060..0000000 --- a/iris-example/src/main/webapp/example/ui/button.js +++ /dev/null @@ -1,142 +0,0 @@ -/** - * Simple button with states and label. - * - * Render a button with simple structure. - * - * @PublicMethods - * - Enable - * - Disable - * - Active - * - OnClick - * - Text - * - * @Settings - * - label -> if present, this will be the button label. - * - click -> function to execute on onClick - * - disabledClass -> class to apply or remove when the button is activated or deactivated. Default "disabled" - * - * @examples - * - * - * _Button = self.InstanceUI( - * "button" - * , "button.js" - * , {"onClick" : function(){alert("Create")} - * }); - * - * _Button.Enable(); - * _Button.Text("Load"); - * _Button.Click( function(){ alert("Load"); }); - * alert( _Button.Text() ); - * if ( _Button.Active() ){} - * - */ -iris.UI( - - function(self) { - - var - //TEMPLATE - _$ = null - ,_$BtnText = null - //VARS - ,_IsActive = true - ; - - self.Settings({ - "label" : "" //text - ,"onClick" : null //function - ,"disabledClass" : "disabled" - }); - - // LyfeCycle - self.Create = function() { - self.Template("example/ui/button.html"); - - _$ = self.$Get(); - _$BtnText = self.$Get("button_text"); - - _Inflate(); - _InflateEvents(); - }; - - function _Inflate(){ - if ( self.Setting("label") ){ - _$BtnText.html( self.Setting("label") ); - } - } - - function _InflateEvents(){ - _$.on("click", _OnClick ); - } - - function _OnClick( p_event ){ - if ( !_IsActive ) return false; - - if ( typeof self.Setting("onClick") == "function" ){ - self.Setting("onClick")( p_event ); - } - } - - function _Enable(){ - _$.removeClass( self.Setting("disabledClass") ); - _IsActive = true; - } - - function _Disable(){ - _$.addClass( self.Setting("disabledClass") ); - _IsActive = false; - } - - function _Active(){ - return _IsActive; - } - - function _Text( p_text ){ - if ( p_text != "undefined" ){ - _$BtnText.html( self.Setting("label") ); - } - return self.Setting("label"); - } - - function _SetClick( f_func ){ - if ( f_func && typeof f_func == "function"){ - self.Setting("onClick", f_func); - } - return self.Setting("onClick"); - } - - /** - * Enables the button, removing class in self.Setting("disabledClass") and switching ON his click event. - * @function - */ - self.Enable = _Enable; - - /** - * Disables the button, applying class in self.Setting("disabledClass") and switching OFF his click event. - * @function - */ - self.Disable = _Disable; - - /** - * Return a boolean indicating the button state. - * @function - */ - self.Active = _Active; - - /** - * Change the button text or retrieve its value. - * @function - * @example - * buttonUi.Text("Text has changed!"); - * alert( buttonUi.Text() ); //alerts "Text has changed!" - */ - self.Text = _Text; - - /** - * Sets a function to be executed when the button is clicked. - * @function - */ - self.Click = _SetClick; - } -); \ No newline at end of file diff --git a/iris-example/src/main/webapp/example/ui/example.html b/iris-example/src/main/webapp/example/ui/example.html deleted file mode 100644 index 7d0f82c..0000000 --- a/iris-example/src/main/webapp/example/ui/example.html +++ /dev/null @@ -1,3 +0,0 @@ -
-

UI list item

-
diff --git a/iris-example/src/main/webapp/example/ui/example.js b/iris-example/src/main/webapp/example/ui/example.js deleted file mode 100644 index e4c2aac..0000000 --- a/iris-example/src/main/webapp/example/ui/example.js +++ /dev/null @@ -1,10 +0,0 @@ -iris.UI(function (self) { - - self.Create = function() { - - self.TemplateMode(self.TEMPLATE_APPEND); - self.Template("example/ui/example.html"); - - }; - -}); diff --git a/iris-example/src/main/webapp/example/ui/example_basic.html b/iris-example/src/main/webapp/example/ui/example_basic.html deleted file mode 100644 index 412ec33..0000000 --- a/iris-example/src/main/webapp/example/ui/example_basic.html +++ /dev/null @@ -1,3 +0,0 @@ -
-

This is a basic UI

-
diff --git a/iris-example/src/main/webapp/example/ui/example_basic.js b/iris-example/src/main/webapp/example/ui/example_basic.js deleted file mode 100644 index 4ffde1d..0000000 --- a/iris-example/src/main/webapp/example/ui/example_basic.js +++ /dev/null @@ -1,7 +0,0 @@ -iris.UI(function(self) { - - self.Create = function() { - self.Template("example/ui/example_basic.html"); - }; - -}); \ No newline at end of file diff --git a/iris-example/src/main/webapp/example/ui/nested.html b/iris-example/src/main/webapp/example/ui/nested.html deleted file mode 100644 index c9fbad0..0000000 --- a/iris-example/src/main/webapp/example/ui/nested.html +++ /dev/null @@ -1,5 +0,0 @@ -
-

Nested UI

- -
-
diff --git a/iris-example/src/main/webapp/example/ui/nested.js b/iris-example/src/main/webapp/example/ui/nested.js deleted file mode 100644 index ffa0bc6..0000000 --- a/iris-example/src/main/webapp/example/ui/nested.js +++ /dev/null @@ -1,16 +0,0 @@ -iris.UI(function (self) { - - self.Create = function() { - - this.TemplateMode(this.TEMPLATE_APPEND); - this.Template("example/ui/nested.html"); - - self.$Get("create_ui").click(_CreateUI); - - }; - - function _CreateUI () { - self.InstanceUI("uis", "example/ui/nested.js"); - } - -}); diff --git a/iris-example/src/main/webapp/index.html b/iris-example/src/main/webapp/index.html deleted file mode 100644 index 4ac8b7d..0000000 --- a/iris-example/src/main/webapp/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - iris example - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/iris-example/src/main/webapp/js/iris-0.4.0.min.js b/iris-example/src/main/webapp/js/iris-0.4.0.min.js deleted file mode 100644 index e119326..0000000 --- a/iris-example/src/main/webapp/js/iris-0.4.0.min.js +++ /dev/null @@ -1,20 +0,0 @@ -var iris=new function(){function N(){var a=D.split("/"),b=document.location.hash.split("/"),c="",d="",e,i=!1;if(a.length>b.length)for(var f=0,h=a.length;fa?"0"+a:a}function ca(a,b){var c=M[n];switch(a){case "y":return String(b.getFullYear()).substring(2);case "Y":return b.getFullYear();case "m":return c=b.getMonth()+1,t(c);case "n":return b.getMonth()+1;case "M":return c[monthNames][b.getMonth()].substring(0, -3);case "b":return c[monthNames][b.getMonth()].substring(0,3).toLowerCase();case "F":return c[monthNames][b.getMonth()];case "d":return c=b.getDate(),t(c);case "D":return c[dayNames][b.getDay()].substring(0,3);case "l":return c[dayNames][b.getDay()];case "s":return c=b.getSeconds(),t(c);case "i":return c=b.getMinutes(),t(c);case "H":return c=b.getHours(),t(c);case "h":return c=b.getHours(),t(0==c%12?12:c%12);case "a":return 12$().jquery&&r("jQuery "+$().jquery+" currently loaded, jQuery 1.5+ required");s=window.console&&window.console.debug&&window.console.warn&&window.console.error;!s&&(window.console&&window.console.log)&&window.console.log("advanced console debugging is not supported in this browser")}; \ No newline at end of file diff --git a/iris-example/src/main/webapp/js/iris-0.4.2.min.js b/iris-example/src/main/webapp/js/iris-0.4.2.min.js deleted file mode 100644 index ce0260d..0000000 --- a/iris-example/src/main/webapp/js/iris-0.4.2.min.js +++ /dev/null @@ -1,25 +0,0 @@ -var iris=new function(){function N(){if(F)return F=!1;var a=t.split("/"),b=document.location.hash.split("/"),c="",d="",e,j=!1;if(""!=t)for(var f=0,h=a.length;fb.length){f=0;for(h=a.length;fa?"0"+a:a}function fa(a,b){var c=L[m];switch(a){case "y":return String(b.getFullYear()).substring(2);case "Y":return b.getFullYear();case "m":return c=b.getMonth()+1,s(c);case "n":return b.getMonth()+1;case "M":return c[monthNames][b.getMonth()].substring(0,3);case "b":return c[monthNames][b.getMonth()].substring(0,3).toLowerCase();case "F":return c[monthNames][b.getMonth()]; -case "d":return c=b.getDate(),s(c);case "D":return c[dayNames][b.getDay()].substring(0,3);case "l":return c[dayNames][b.getDay()];case "s":return c=b.getSeconds(),s(c);case "i":return c=b.getMinutes(),s(c);case "H":return c=b.getHours(),s(c);case "h":return c=b.getHours(),s(0==c%12?12:c%12);case "a":return 12$().jquery&&p("jQuery "+$().jquery+" currently loaded, jQuery 1.5+ required");q=window.console&&window.console.debug&&window.console.warn&&window.console.error;!q&&(window.console&& -window.console.log)&&window.console.log("advanced console debugging is not supported in this browser")}; \ No newline at end of file diff --git a/iris-example/src/main/webapp/js/iris-0.4.3.min.js b/iris-example/src/main/webapp/js/iris-0.4.3.min.js deleted file mode 100644 index f01ba9c..0000000 --- a/iris-example/src/main/webapp/js/iris-0.4.3.min.js +++ /dev/null @@ -1,27 +0,0 @@ -var iris=new function(){function O(){if(!P)return iris.E("You must set the welcome screen using iris.screen.WelcomeScreen()"),!1;if(I)return I=!1;var a=t.split("/"),b=document.location.hash.split("/"),c="",d="",e,u=!1;if(""!=t)for(var g=0,v=a.length;gb.length){g=0;for(v=a.length;ga?"0"+a:a}function ha(a,b){var c=D[f];switch(a){case "y":return String(b.getFullYear()).substring(2);case "Y":return b.getFullYear();case "m":return c=b.getMonth()+1,s(c);case "n":return b.getMonth()+1;case "M":return c[monthNames][b.getMonth()].substring(0,3);case "b":return c[monthNames][b.getMonth()].substring(0,3).toLowerCase();case "F":return c[monthNames][b.getMonth()];case "d":return c=b.getDate(),s(c);case "D":return c[dayNames][b.getDay()].substring(0, -3);case "l":return c[dayNames][b.getDay()];case "s":return c=b.getSeconds(),s(c);case "i":return c=b.getMinutes(),s(c);case "H":return c=b.getHours(),s(c);case "h":return c=b.getHours(),s(0==c%12?12:c%12);case "a":return 12$().jquery&&p("jQuery "+$().jquery+" currently loaded, jQuery 1.5+ required");r=window.console&&window.console.debug&&window.console.warn&&window.console.error;!r&&(window.console&&window.console.log)&&window.console.log("advanced console debugging is not supported in this browser")}; \ No newline at end of file diff --git a/iris-example/src/main/webapp/js/iris-0.4.4.min.js b/iris-example/src/main/webapp/js/iris-0.4.4.min.js deleted file mode 100644 index d09d77e..0000000 --- a/iris-example/src/main/webapp/js/iris-0.4.4.min.js +++ /dev/null @@ -1,28 +0,0 @@ -var iris=new function(){function s(){q&&C.debug&&window.console.debug(t,arguments)}function n(){q&&C.error&&window.console.error(t,arguments)}function M(){if(!N)return iris.E("You must set the welcome screen using iris.screen.WelcomeScreen()"),!1;if(G)return G=!1;var a=u.split("/"),b=document.location.hash.split("/"),c="",d="",g,v=!1;if(""!=u)for(var h=0,w=a.length;h -b.length){h=0;for(w=a.length;ha?"0"+a:a}function ga(a,b){var c=B[e];switch(a){case "y":return String(b.getFullYear()).substring(2); -case "Y":return b.getFullYear();case "m":return c=b.getMonth()+1,r(c);case "n":return b.getMonth()+1;case "M":return c[monthNames][b.getMonth()].substring(0,3);case "b":return c[monthNames][b.getMonth()].substring(0,3).toLowerCase();case "F":return c[monthNames][b.getMonth()];case "d":return c=b.getDate(),r(c);case "D":return c[dayNames][b.getDay()].substring(0,3);case "l":return c[dayNames][b.getDay()];case "s":return c=b.getSeconds(),r(c);case "i":return c=b.getMinutes(),r(c);case "H":return c= -b.getHours(),r(c);case "h":return c=b.getHours(),r(0==c%12?12:c%12);case "a":return 12$().jquery&&n("jQuery "+$().jquery+ -" currently loaded, jQuery 1.5+ required");"onhashchange"in window?$(window).bind("hashchange",M):n("The browser doesn't support the hashchange event");q=window.console&&window.console.debug&&window.console.warn&&window.console.error;!q&&(window.console&&window.console.log)&&window.console.log("advanced console debugging is not supported in this browser")}; \ No newline at end of file diff --git a/iris-example/src/main/webapp/js/iris-0.4.5.min.js b/iris-example/src/main/webapp/js/iris-0.4.5.min.js deleted file mode 100644 index 110fedf..0000000 --- a/iris-example/src/main/webapp/js/iris-0.4.5.min.js +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Copyright (c) 2012 Intelygenz - * @license http://directory.fsf.org/wiki/License:BSD_3Clause - * @version 0.4.5 - * */ -var iris={}; -(function(){function w(){t&&F.debug&&window.console.debug(x,arguments)}function r(){t&&F.error&&window.console.error(x,arguments)}function Q(){if(!R)return iris.E("You must set the welcome screen using iris.screen.WelcomeScreen()"),!1;iris.event.Notify(iris.event.BEFORE_NAVIGATION);if(L)return L=!1;var a=y.split("/"),b=document.location.hash.split("/"),c="",d="",h,z=!1,g;if(""!==y)for(g=0;gb.length)for(g=0;ga?"0"+a:a}function ha(a,b){var c= -E[f];switch(a){case "y":return String(b.getFullYear()).substring(2);case "Y":return b.getFullYear();case "m":return c=b.getMonth()+1,v(c);case "n":return b.getMonth()+1;case "M":return c.monthNames[b.getMonth()].substring(0,3);case "b":return c.monthNames[b.getMonth()].substring(0,3).toLowerCase();case "F":return c.monthNames[b.getMonth()];case "d":return c=b.getDate(),v(c);case "D":return c.dayNames[b.getDay()].substring(0,3);case "l":return c.dayNames[b.getDay()];case "s":return c=b.getSeconds(), -v(c);case "i":return c=b.getMinutes(),v(c);case "H":return c=b.getHours(),v(c);case "h":return c=b.getHours(),v(0===c%12?12:c%12);case "a":return 12$().jquery&&r("jQuery "+$().jquery+" currently loaded, jQuery 1.5+ required");t=window.console&&window.console.debug&&window.console.warn&&window.console.error;!t&&(window.console&&window.console.log)&&window.console.log("advanced console debugging is not supported in this browser")})(); \ No newline at end of file diff --git a/iris-example/src/main/webapp/js/iris.js b/iris-example/src/main/webapp/js/iris.js deleted file mode 100644 index 47b7432..0000000 --- a/iris-example/src/main/webapp/js/iris.js +++ /dev/null @@ -1,2095 +0,0 @@ -/** - * Copyright (c) 2012 Intelygenz - * All rights reserved. - * - * New BSD License - * - * 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. - * 3. Neither the name of copyright holders nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "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 COPYRIGHT HOLDERS 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. - * - * @version 0.4.5 - * - * @namespace - * This JavaScript library provides different client-side optimization techniques for front construction. - * It is independent and compatible with any server-side technology: JAVA, PHP, Python, GOOGLE APP ENGINE, .NET... - * - * */ -var iris = (function () { - "use strict"; - - var _Iris = {}, - _CacheVersion, - _JQ_MIN_VER = 1.5, - _Env = null, - _Log = {"error":true}, - _LogPrefix = "", - _Screen = {}, - _ScreenUrl = {}, - _ScreenContainer = {}, - _LastScreen = {}, - _PrevHashUrl = "", - _Global = {}, - _Local = {}, - _Locale = null, - _Config = {}, - _Lang = {}, - _Event = {}, - _Includes = {}, - _AddOns = {}, - _AppBaseUri = "", - _LastIncludePath, - _Head = $("head").get(0), - _Cache = true, - _HasConsole, - _GotoCancelled = false, - _WelcomeScreenCreated = false - ; - - function _Init () { - - // CHECK JQ DEPENDENCY - if( typeof jQuery === "undefined" ) { - _E( "jQuery " + _JQ_MIN_VER + "+ previous load required" ); - } - else if ( $().jquery < _JQ_MIN_VER ) { - _E( "jQuery " + $().jquery + " currently loaded, jQuery " + _JQ_MIN_VER + "+ required" ); - } - - // CHECK CONSOLE SUPPORT - _HasConsole = (window.console && window.console.debug && window.console.warn && window.console.error); - if ( !_HasConsole && window.console && window.console.log ) { - window.console.log("advanced console debugging is not supported in this browser"); - } - } - - - function _LogOf (p_type) { - return _Log[p_type]; - } - - function _L(){ - if ( _HasConsole && window.console.log) { - window.console.log(_LogPrefix, arguments); - } - } - - function _D(){ - if(_HasConsole && _LogOf("debug") ){ - window.console.debug(_LogPrefix, arguments); - } - } - - function _W(){ - if(_HasConsole && _LogOf("warning") ){ - window.console.warn(_LogPrefix, arguments); - } - } - - function _E(){ - if(_HasConsole && _LogOf("error") ){ - window.console.error(_LogPrefix, arguments); - } - } - - - - function _Goto (p_hashUri) { - _PrevHashUrl = document.location.hash; - document.location.hash = p_hashUri; // Trigger hashchange event, then execute _Window_OnHashChange() - } - - function _Window_OnHashChange () { - - if ( !_WelcomeScreenCreated ) { - iris.E("You must set the welcome screen using iris.screen.WelcomeScreen()"); - return false; - } - - iris.event.Notify(iris.event.BEFORE_NAVIGATION); - - if ( _GotoCancelled ) { - _GotoCancelled = false; - return false; - } - - var prev = _PrevHashUrl.split("/"), - curr = document.location.hash.split("/"), - prevPath = "", - currPath = "", - pathWithoutParams, - hasRemainingChilds = false, - i - ; - - // Check if all screen.canSleep() are true - if ( _PrevHashUrl !== "" ) { - for ( i=0; i curr.length ) { - - for ( i=0; i 0 ? base[0].attributes.href.value : "/"; - _AppBaseUri = document.location.protocol + "//" + document.location.host + base; - } - return _AppBaseUri; - } - - function _Ajax (p_settings) { - return $.ajax(p_settings); - } - - function _AjaxSync (p_uri, p_dataType, f_success, f_error) { - var ajaxSettings = { - url: p_uri, - dataType: p_dataType, - async: false, - cache: _Cache, - success : f_success, - error : f_error - }; - - if ( _Cache && _CacheVersion !== undefined ) { - ajaxSettings.data = "_=" + _CacheVersion; - } - - $.ajax(ajaxSettings); - } - - function _SetCacheVersion (p_value) { - _CacheVersion = p_value; - } - - - function _IncludeFiles () { - for ( var f=0,F=arguments.length; f -1 ) { - var link = document.createElement('link'); - link.rel = 'stylesheet'; - link.type = 'text/css'; - link.href = fileUrl; - _Head.appendChild(link); - } - else { - var isHtml = p_uiFile.lastIndexOf(".html") > -1; - _AjaxSync( - fileUrl, - (isHtml ? "html" : "text"), - function (p_data) { - _LastIncludePath = p_uiFile; - - if ( isHtml ) { - _Includes[p_uiFile] = _LocaleParse(p_data); - } - else { - var script = document.createElement("script"); - script.language = "javascript"; - script.type = "text/javascript"; - script.text = p_data; - _Head.appendChild(script); - } - - }, - function (p_err) { - delete _Includes[fileUrl]; - _E(p_err.status, "Error loading file '" + fileUrl + "'"); - } - ); - } - } - } - - - function _ConfigLoad (p_json){ - if ( p_json ) { - $.extend(_Config, p_json); - - _GlobalLoad( _Config.global ); - - var currentEnv = _GetEnv(); - if ( _Config.log ) { - var logConfig = _Config.log[currentEnv]; - var logs = logConfig.split(","); - for ( var i=0; i < logs.length; i++ ) { - _Log[ $.trim(logs[i]) ] = true; - } - } - - _Cache = true; - if ( _Config.hasOwnProperty("environments-nocache") ) { - var envNocache = _Config["environments-nocache"].split(","); - for ( var f=0, F=envNocache.length; f -1 ) { - _Env = _Config.environment[p]; - break; - } - } - if ( !_Env ) { - _Env = "pro"; - } - _LogPrefix = "[" + _Env + "]"; - } - return _Env; - } - } - - function _GlobalLoad(p_hash){ - $.extend(_Global, p_hash); - return _Global; - } - - function _GlobalData (p_label, p_value){ - if ( p_label && p_value !== undefined ) { - _Global[p_label] = p_value; - } - else if ( p_label ) { - return _Global[p_label]; - } - else { - return _Global; - } - } - - function _LocalLoad(p_hash){ - $.extend(_Local, p_hash); - return _Local; - } - - function _LocalData(p_label, p_value){ - if ( p_label && p_value !== undefined ) { - _Local[p_label][_GetEnv()] = p_value; - } - else if ( p_label ) { - return _Local[p_label][_GetEnv()]; - } - else { - return _Local; - } - } - - - // - // EVENT - // - function _FindEvent(p_eventName, f_func){ - var events = _Event[p_eventName]; - if ( events ) { - for ( var f=0, F=events.length; f -1 ){ - var labels = p_label.split("."); - var f,F=labels.length; - for(f=0; f= 0) ? settings.formatPos : settings.formatNeg; - - var decimal = val % 1; - var num = String( Math.abs(val-decimal) ); - - decimal = String(Math.abs(decimal).toFixed(settings.precision)); - decimal = decimal.substr(2); - - for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) { - num = num.substring(0, num.length - (4 * i + 3)) + settings.thousand + num.substring(num.length - (4 * i + 3)); - } - - return format.replace("n", num + settings.decimal + decimal ); - } - - function _DateFormat (p_date, p_format) { - if ( !p_format ) { - p_format = _GetRegionalSetting("dateFormat"); - } - - if ( typeof p_date !== "object" ) { - p_date = new Date(Number(p_date)); - } - - var dateFormat = ""; - for (var f=0, F=p_format.length; f 12) ? "p.m." : "a.m."; - case "A": - return (p_date.getHours() > 12) ? "PM" : "AM"; - case "U": - return Math.floor(p_date.getTime() * 0.001); - default: - return p_formatChar; - } - } - - var _Regional = { - "en-US" : { - dayNames : ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"], - monthNames : ["January","February","March","April","May","June","July","August","September","October","November","December"], - dateFormat : "m/d/Y h:i:s", - currency : { - formatPos : "n", - formatNeg : "(n)", - decimal : ".", - thousand : ",", - precision : 2 - } - }, - "es-ES" : { - dayNames : ["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"], - monthNames : ["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"], - dateFormat : "d/m/Y H:i:s", - currency : { - formatPos : "n", - formatNeg : "-n", - decimal : ",", - thousand : ".", - precision : 2 - } - } - }; - - function _AddRegional (p_locale, p_regional) { - if ( !p_regional.hasOwnProperty("dayNames") || - !p_regional.hasOwnProperty("monthNames") || - !p_regional.hasOwnProperty("dateFormat") || - !p_regional.hasOwnProperty("currency") || - !p_regional.currency.hasOwnProperty("formatPos") || - !p_regional.currency.hasOwnProperty("formatNeg") || - !p_regional.currency.hasOwnProperty("decimal") || - !p_regional.currency.hasOwnProperty("thousand") || - !p_regional.currency.hasOwnProperty("precision") - ) { - iris.E("Regional '" + p_locale + "' has invalid format ", p_regional); - } - else { - _Regional[p_locale] = p_regional; - } - } - - /** - * @class - * Provide mechanism to store and retrieve settings values. - */ - function _Settable () { - - var _Self = {}; - - _Self.__Setting__ = null; - - /** - * Set multiple component settings. - * You can access to this values using {@link iris-_Settable#Setting}. - * @function - * @example - * - * self.Settings({ - * "min" : 0 - * ,"label" : "example" - * }); - */ - _Self.Settings = function (p_settings) { - return $.extend(_Self.__Setting__, p_settings); - }; - - /** - * Set or get a single component setting. - * @function - * @example - * - * var label = self.Setting("label"); // Get setting value - * - * self.Setting("label", "example"); // Set setting value - */ - _Self.Setting = function (p_label, p_value) { - if ( p_value === undefined ) { - if ( !_Self.__Setting__.hasOwnProperty(p_label) ) { - iris.W("The setting ", p_label, " is not in ", _Self.__Setting__, _Self); - } - return _Self.__Setting__[p_label]; - } - else { - _Self.__Setting__[p_label] = p_value; - } - }; - - return _Self; - } - - /** - * @class - * Abstract component for UIs / Screens extending. - * Common properties and functions. - */ - function _AbstractComponent () { - - var _Self = _Settable(); - - _Self.TEMPLATE_APPEND = "append"; - _Self.TEMPLATE_REPLACE = "replace"; - _Self.TEMPLATE_PREPEND = "prepend"; - - _Self.__$Tmpl__ = null; - _Self.__Id__ = null; - _Self.__UIComponents__ = null; - _Self.__$Container__ = null; - _Self.__IsSleeping__ = null; - _Self.__FileJs__ = null; - _Self.__FileTmpl__ = null; - - _Self.__Sleep__ = function () { - for ( var f=0, F=_Self.__UIComponents__.length; f < F; f++ ) { - _Self.__UIComponents__[f].__Sleep__(); - } - _Self.__IsSleeping__ = true; - _Self.Sleep(); - }; - - _Self.__Awake__ = function (p_params) { - for ( var f=0, F=_Self.__UIComponents__.length; f < F; f++ ) { - _Self.__UIComponents__[f].__Awake__(); - } - _Self.__IsSleeping__ = false; - _Self.Awake(p_params); - }; - - _Self.__Destroy__ = function () { - if ( !_Self.__IsSleeping__ ) { - _Self.__Sleep__(); - } - - for ( var f=0, F=_Self.__UIComponents__.length; f < F; f++ ) { - _Self.__UIComponents__[f].__Destroy__(); - } - _Self.__UIComponents__ = null; - _Self.Destroy(); - }; - - _Self.__Template__ = function (p_htmlUrl, p_params, p_mode) { - _Self.__FileTmpl__ = p_htmlUrl; - - if ( typeof p_htmlUrl === "undefined" ) { - _Self.__$Tmpl__ = _Self.__$Container__; - return _Self.__$Tmpl__; - } - - iris.Include(p_htmlUrl); - - var tmplHtml = p_params ? _TemplateParse(_Includes[p_htmlUrl], p_params, p_htmlUrl) : _Includes[p_htmlUrl]; - var $tmpl = $(tmplHtml); - - _Self.__$Tmpl__ = $tmpl; - if ( $tmpl.size() > 1 ) { - iris.E("Template '" + p_htmlUrl + "' must have only one root node"); - } - - switch ( p_mode ) { - case _Self.TEMPLATE_APPEND: - _Self.__$Container__.append($tmpl); - break; - case _Self.TEMPLATE_REPLACE: - _Self.__$Container__.replaceWith($tmpl); - break; - case _Self.TEMPLATE_PREPEND: - _Self.__$Container__.prepend($tmpl); - break; - default: - iris.E("Unknown template mode '" + p_mode + "'"); - } - - }; - - // Check if the template is set (https://github.com/intelygenz/iris/issues/19) - _Self.__CheckTmpl__ = function () { - if ( _Self.__$Tmpl__ === null ) { - iris.E("You must set a template using self.Template() in '" + _Self.__FileJs__ + "'"); - return undefined; - } - }; - - /** - * Show the template object. - * If the component is a screen, this is called automatically - * after self.Awake() when iris navigates. - * - * See {@link iris.Goto} for more details. - * @function - */ - _Self.Show = function () { - _Self.__CheckTmpl__(); - - _Self.__$Tmpl__.show(); - }; - - /** - * Hide the template object. - * If the component is the current screen, this is called automatically - * after self.Sleep() when iris navigates to other screen. Is called too - * when a new screen is created. - * - * See {@link iris.Goto} for more details. - * @function - */ - _Self.Hide = function () { - _Self.__CheckTmpl__(); - - _Self.__$Tmpl__.hide(); - }; - - - - /** - * Find a JQuery object, using its data-id attribute, in the template. - * The template must be defined using self.Template().
- * The data-id must be unique in the template. - * - * @function - * @param {String} [p_id] Element data-id value, if no set return root element (optional) - * @example - * - * var $label = self.$Get("span_label"); - * - * var $root = self.$Get(); - */ - _Self.$Get = function (p_id) { - _Self.__CheckTmpl__(); - - if ( p_id ) { - var - id = "[data-id=" + p_id + "]", - filter = _Self.__$Tmpl__.filter(id), - $element = null - ; - - if ( filter.length > 0 ) { - $element = filter; - } - else { - var find = _Self.__$Tmpl__.find(id); - if ( find.size() > 0 ) { - $element = find; - } - } - - if ( $element === null ) { - iris.E("[data-id=" + p_id + "] not found in '" + _Self.__FileTmpl__ + "' used by '" + _Self.__FileJs__ + "'"); - return undefined; - } - else if ( $element.size() > 1 ) { - iris.E("[data-id=" + p_id + "] must be unique in '" + _Self.__FileTmpl__ + "' used by '" + _Self.__FileJs__ + "'"); - return undefined; - } - return $element; - } - - return _Self.__$Tmpl__; - }; - - /** - * Create a new UI component instance. - * - * The created component is registered into the parent screen or UI, - * so you must use {@link iris-_AbstractComponent#DestroyUI} in order to remove it. - * - * The component is added to p_id container or replace it. - * See {@link iris-_AbstractUI#TemplateMode} for more details. - * - * @function - * @param {String} p_id Container data-id - * @param {String} p_jsUrl UI file path - * @param {Object} [p_uiSettings] UI Settings is optional - * @param {Constant} [p_templateMode] Use self.TEMPLATE_APPEND, self.TEMPLATE_PREPEND, the default mode isself.TEMPLATE_REPLACE (optional) - * @example - * - * self.InstanceUI("custom_ui", "custom_ui.js"); - * - * self.InstanceUI("btn_ok", "button.js", {"label":"OK","ico":"accept"}); - * - * self.InstanceUI("btn_ok", "button.js", {"label":"example"}, self.TEMPLATE_PREPEND); - */ - _Self.InstanceUI = function (p_id, p_jsUrl, p_uiSettings, p_templateMode) { - var $container = _Self.$Get(p_id); - if ( $container.size() === 1 ) { - var uiInstance = _InstanceUI($container, $container.data("id"), p_jsUrl, p_uiSettings, p_templateMode); - _Self.__UIComponents__[_Self.__UIComponents__.length] = uiInstance; - return uiInstance; - } - }; - - /** - * Remove a child UI component completely previously created using {@link self.InstanceUI}. - * Remove parent references. - * @function - * @param {UI} p_ui UI to be removed - * @example - * - * var customUI = self.InstanceUI("custom_ui", "custom_ui.js"); - * self.DestroyUI(customUI); - */ - _Self.DestroyUI = function (p_ui) { - for (var f=0, F=_Self.__UIComponents__.length; f < F; f++) { - if (_Self.__UIComponents__[f] === p_ui) { - _Self.__UIComponents__.splice(f, 1); - p_ui.__Destroy__(); - p_ui.$Get().remove(); - break; - } - } - }; - - /** - * Remove all UI components from a container. - * The UIs must be previously created using {@link self.InstanceUI}.
- * Remove parent references. - * @function - * @param {String|JQuery} p_idOrJq UI Container data-id or JQuery object - * @example - * self.DestroyAllUIs("container"); - * - * self.DestroyAllUIs($container); - */ - _Self.DestroyAllUIs = function (p_idOrJq) { - var contSelector = typeof p_idOrJq === "string" ? "[data-id=" + p_idOrJq + "]" : p_idOrJq.selector; - var ui; - for (var f=0, F=_Self.__UIComponents__.length; f < F; f++) { - ui = _Self.__UIComponents__[f]; - - if (ui.__$Container__.selector === contSelector) { - _Self.__UIComponents__.splice(f--, 1); - F--; - - ui.__Destroy__(); - ui.$Get().remove(); - } - } - }; - - /** - * Get the component container. - * If the component is a screen, the container is - * set using {@link iris-_AbstractScreen#AddScreen} function. - * Otherwise if the component is a UI, the container is - * set using {@link iris-_AbstractComponent#InstanceUI} function. - * @function - * @example - * - * var screenContainer = self.$Container(); - */ - _Self.$Container = function () { - return _Self.__$Container__; - }; - - // To override functions - - /** - * Called automatically only once at the creation phase. - * Function to override. - * @function - */ - _Self.Create = function () {}; - - /** - * Called automatically when a screen is showed. - * Function to override. - * @function - */ - _Self.Awake = function () {}; - - /** - * Called automatically when a screen is going to sleep, before {@link iris-_AbstractComponent#Sleep}. - * If return false, the self.Sleep() function is not called. - * @function - */ - _Self.CanSleep = function () { - return true; - }; - - /** - * Called automatically when a screen is hidden. - * Function to override. - * @function - */ - _Self.Sleep = function () {}; - - /** - * Called automatically by {@link iris-_AbstractComponent#DestroyUI}. - * Function to override. - */ - _Self.Destroy = function () {}; - - return _Self; - } - - /** - * @class - * Abstract class for AddOn extending. - * Common AddOn functions and properties. - */ - function _AbstractAddOn () { - - var _Self = _Settable(); - - _Self.__Components__ = null; - - /** - * Add a array of UIs to the AddOn. - * It is called automatically from {@link iris.ApplyAddOn}. - * @param p_uis {Array} Array of UIs - * @function - */ - _Self.AddAll = function (p_uis) { - for (var f=0, F=p_uis.length; fself.TEMPLATE_REPLACE. - * Use this function before call {@link iris-_AbstractUI.Template}. - * @function - * @example - * self.TemplateMode(self.TEMPLATE_APPEND); - * self.Template("tmpl.html"); - */ - _Self.TemplateMode = function (p_mode) { - _Self.__TemplateMode__ = p_mode; - }; - - /** - * Create the component template. - * Translate multilanguage values, draw parameters, - * create DOM elements and insert into container or replace it. - * - * See {@link iris-_AbstractUI.TemplateMode}. - * @function - * @example - * self.TemplateMode(self.TEMPLATE_APPEND); - * self.Template("tmpl.html", {"age":23}); - */ - _Self.Template = function (p_htmlUrl, p_params) { - _Self.__Template__(p_htmlUrl, p_params, _Self.__TemplateMode__); - }; - - return _Self; - } - - /** - * @class - * Abstract class for screen extending. - * Common screen functions and properties. - */ - function _AbstractScreen () { - - var _Self = _AbstractComponent(); - - /** - * Create the screen template. - * Translate multilanguage values, draw parameters, - * create DOM elements and it is insert into the screen container. - * @function - * @example - * self.Template("tmpl.html", {"name":"Jonh"}); - */ - _Self.Template = function (p_htmlUrl, p_params) { - _Self.__Template__(p_htmlUrl, p_params, _Self.TEMPLATE_APPEND); - }; - - /** - * Add a new screen. - * You can navigate to this using iris.Goto. - * See {@link iris.Goto} for more details. - * @function - * @param {JQuery} p_containerId Screen container data-id - * @param {String} p_screenPath Screen URL path - * @param {String} p_jsUrl Screen controller - * @example - * self.AddScreen( - * "screens" - * , "#books/edit" - * , "screen/book_edit.js" - * ); - * - * iris.Goto("#books/edit"); - */ - _Self.AddScreen = function _ScreenAdd (p_containerId, p_screenPath, p_jsUrl) { - var $cont = _Self.$Get(p_containerId); - - if ( $cont.data("screen_context") === undefined ) { - - // Set a unique screen context id to the screen container - // like: #path/to/screen|containerid - $cont.data("screen_context", _Self.__Id__ + "|" + p_containerId); - } - - _ScreenUrl[p_screenPath] = p_jsUrl; - _ScreenContainer[p_screenPath] = $cont; - }; - - return _Self; - } - - function _Deserialize (p_$form, p_data) { - var element, tag, value; - for ( var name in p_data ) { - if ( p_data.hasOwnProperty(name) ) { - element = p_$form.find('[name="' + name + '"]'); - - if ( element.length > 0 ) { - tag = element[0].tagName.toLowerCase(); - value = p_data[name]; - switch (tag) { - case "select": - case"textarea": - $(element).val(value); - break; - case "input": - switch (tag) { - case "checkbox": - if (value) { - element.attr("checked", "checked"); - } - break; - case "radio": - element.filter('[value="' + value + '"]').attr("checked", "checked"); - break; - default: - element.val(value); - } - } - } - } - } - } - - function _Serialize (p_$form) { - var json = {}; - $.map(p_$form.serializeArray(), function(p_obj){ - json[ p_obj.name ] = p_obj.value; - }); - return json; - } - - - /** @namespace Screen management: Add a new screen, ... */ - _Iris.screen = {}; - - /** @namespace Event management: Add/remove listeners and trigger events. */ - _Iris.event = {}; - - /** @namespace Application configuration: Load configuration data and environments. */ - _Iris.config = {}; - - /** @namespace User interface: Work with HTML elements. */ - _Iris.ui = {}; - - /** @namespace Asynchronous HTTP request and URL base. */ - _Iris.net = {}; - - /** @namespace Global configurations management */ - _Iris.global = {}; - - /** @namespace Environment configurations management */ - _Iris.local = {}; - - /** @namespace Multilanguage : Load translation files, get translated text, ...*/ - _Iris.lang = {}; - - /** @namespace Various utilities: Date formatting, serialization, ... */ - _Iris.util = {}; - - /** - * Load the configuration JSON. - * You can use iris without load this file. - * @function - * @param {JSON} config Contains information about environments, global and environment settings, loglevel logs ... - * @example - * iris.config.Load({ - * "environment-default" : "pro" - *,"environments-nocache" : "dev" - * ,"environment": { - * "localhost" : "dev" - * ,"www.example.com" : "pro" - * } - * ,"log": { - * "dev": "debug,warning,error" - * ,"pro" : "debug,error" - * } - * ,"global": { - * "global-variable" : "example" - * } - * ,"local": { - * "local-variable" : { - * "dev" : "example-dev" - * ,"pro" : "example-pro" - * } - * } - * }); - * - */ - _Iris.config.Load = _ConfigLoad; - - /** - * Set or get the current environment. - * If a configuration file is loaded, iris try set this value using - * the current URL and the defined environments. - * If not match anything use "environment-default" - * The local variables depends of this value. - * @function - * @param {String} [p_env] Environment name (optional) - * @example - * Example: URL=http://localhost:8080/admin - * Configuration file: - * ... - * "environment": { - * "localhost" : "dev" - * ,"www.example.com" : "pro" - * } - * ... - * - * iris.config.Env(); // return "dev" - * - * iris.config.Env("pro"); // set environment to "pro" - */ - _Iris.config.Env = _GetEnv; - - /** - * Add global configuration values​​. - * If you load a configuration file, automatically load the object "global" ({@link iris.config.Load}). - * See {@link iris.global.Data} for more details. - * @function - * @param {Object} p_hash Object like: { "name" : value, ... } - * @example - * iris.global.Load({"global-variable" : "value"}); - * iris.global.Data("global-variable"); // return "value" - */ - _Iris.global.Load = _GlobalLoad; - - /** - * Get or set the value of a global configuration variable. - * If label and value are not specified then return an object with all values. - * See {@link iris.global.Load} for more details. - * @function - * @param {String} [p_label] Variable label (optional) - * @param {String} [p_value] Variable value (optional) - * @example - * iris.global.Data("global-variable"); - */ - _Iris.global.Data = _GlobalData; - - /** - * Add configuration values that depends on current environment. - * If you load a configuration file, automatically load the object "local" ({@link iris.config.Load}). - * See {@link iris.local.Data} for more details. - * @function - * @param {Object} p_hash Object like: { "name" : {"environment" : value, ... }, ... } - * @example - * iris.global.Load({"global-variable" : "value"}); - * iris.global.Data("global-variable"); // return "value" - */ - _Iris.local.Load = _LocalLoad; - - /** - * Get or set the value of a configuration variable that depends on current environment. - * If label and value are not specified then return an object with all values. - * See {@link iris.local.Load} for more details. - * @function - * @param {String} [p_label] Variable label (optional) - * @param {String} [p_value] Variable value (optional) - * @example - * iris.local.Data({ - * "local-variable" : { - * "dev" : "example-dev" - * ,"pro" : "example-pro" - * } - * }); - * - * // If environemnt="dev" then return "example-dev" - * iris.local.Data("local-variable"); - */ - _Iris.local.Data = _LocalData; - - /** - * Add translation texts to a locale. - * See {@link iris.lang.Get} for more details. - * @function - * @param {String} p_locale Locale - * @param {Object} p_data Object like { "LABEL" : "value", GROUP : { "LABEL" : "value", ... }, ... } - * @example - * iris.lang.Load( "es-ES" - * ,{ "LABEL":"etiqueta" - * ,{"GROUP":{ - * "NESTED_VALUE" : "valor anidado" - * } - * }); - * - * iris.lang.Get("LABEL"); - * iris.lang.Get("GROUP.NESTED_VALUE"); - */ - _Iris.lang.Load = _LocaleLoad; - - /** - * Load remote translation texts into a locale. - * @function - * @param {String} p_locale Locale - * @param {String} p_uri URL to load - * @param {Object} p_settings {@code {"success" : function (p_locale) {}, "error" : function (p_locale) {}} } - * @example - * iris.lang.LoadFrom( - * "es-ES" - * , "http://example.com/lang" - * , {"success":_OnLangLoad} - * ); - */ - _Iris.lang.LoadFrom = _LangLoadFrom; - - /** - * Get a translation text according to the Locale. - * You can access to nested values using dot notation. - * See {@link iris.local.Locale} for more details. - * @function - * @param {String} p_label Label - * @example - * iris.lang.Get("LABEL"); - * - * iris.lang.Get("GROUP.LABEL"); - */ - _Iris.lang.Get = _LangGet; - - /** - * Set or get the current locale. - * @function - * @param {String} [p_locale] Locale (optional) - * @example - * var locale = iris.lang.Locale(); - * iris.lang.Locale("es-ES"); - */ - _Iris.lang.Locale = _LocaleGet; - - /** - * Safe debug traces. - * @function - * @param {arguments} - * @example - * iris.L("text", variable); - */ - _Iris.L = _L; - - /** - * Safe debug traces. If debug-level is active for the current environment then print traces. - * See {@link iris.config.Load} for more details. - * @function - * @param {arguments} - * @example - * iris.D("text", variable); - */ - _Iris.D = _D; - - /** - * Safe warning traces. If warning-level is active for the current environment then print traces. - * @function - * @see {@link iris.config.Load} - * @param {arguments} - * @example - * iris.W("text", variable); - */ - _Iris.W = _W; - - /** - * Safe error traces. If error-level is active for the current environment then print traces. - * See {@link iris.config.Load} for more details. - * @function - * @param {arguments} - * @example - * iris.E("text", variable); - */ - _Iris.E = _E; - - /** - * Event fired before do a navigation. - * @example - * iris.event.Subscribe(iris.event.BEFORE_NAVIGATION, _OnBeforeNavigation); - */ - _Iris.event.BEFORE_NAVIGATION = "iris_before_navigation"; - - /** - * Add an event listener. - * See {@link iris.event.Notify} and {@link iris.event.Remove} for more details. - * @function - * @param {String} p_eventName Event identifier - * @param {Function} f_func Event listener - * @example - * iris.event.Subscribe("user_select", _OnUserSelect); - */ - _Iris.event.Subscribe = _EventSubscribe; - - /** - * Trigger an event. - * See {@link iris.event.Subscribe} and {@link iris.event.Remove} for more details. - * @function - * @param {String} p_eventName Event identifier - * @param {Object} p_data Event paramater - * @example - * iris.event.Notify( - * "user_select" - * , {"user_id" : 123, "name" : "John"} - * ); - */ - _Iris.event.Notify = _EventNotify; - - /** - * Remove an event listener. - * See {@link iris.event.Subscribe} and {@link iris.event.Notify} for more details. - * @function - * @param {String} p_eventName Event identifier - * @param {String} f_func Event listener - * @example - * iris.event.Remove("user_select", _OnUserSelect); - */ - _Iris.event.Remove = _EventRemove; - - /** - * Get or set the application base URL. - * Use the <base > HTML tag if are defined. - * @function - * @param {String} [p_baseUri] URL base (optional) - * @example - * // Current URL = http://www.example.com/admin/example/path?a=1 - * iris.net.BaseUri(); // return http://www.example.com/ - */ - _Iris.net.BaseUri = _BaseUri; - - /** - * Do an Ajax request. - * Accepts the same parameters as jQuery.ajax() - * @function - * @see JQuery Ajax. - * @example - * iris.net.Ajax( - * { "url" : "/s/myservice" - * , "type" : "GET" - * } - * ); - */ - _Iris.net.Ajax = _Ajax; - - /** - * Set a URL parameter to be used as cache version control. - * This parameter will be appended to URL string automatically - * when loading static resources. - * @function - * @param {String} p_value Parameter value - */ - _Iris.net.CacheVersion = _SetCacheVersion; - - /** - * Register a Screen object. - * It must appear at the beginning of the screen file. - * @function - * @param {Function} f_screen Screen class - * @example - * iris.Screen( - * function (self) { - * self.Create = function () { - * } - * - * self.Awake = function (p_params) { - * } - * - * self.Sleep = function () { - * } - * } - * ); - */ - _Iris.Screen = _CreateScreen; - - /** - * Register an UI object. - * It must appear at the beginning of the screen file. - * @function - * @param {Function} f_ui UI class - * @example - * iris.UI( - * function (self) { - * self.Create = function (p_domAttr, p_settings) { - * } - * - * self.Awake = function (p_params) { - * } - * - * self.Sleep = function () { - * } - * } - * ); - */ - _Iris.UI = _CreateUI; - - /** - * Set the initial screen. - * This screen is registered as the root screen - * and automatically is shown. - * @param {String} p_jsUrl Screen controller - * @function - * @example - * iris.screen.WelcomeScreen("screen/main.js"); - */ - _Iris.screen.WelcomeScreen = _WelcomeScreen; - - /** - * Destroy a created screen. - * Free screen and its UIs memory. - * Call in cascade all Sleep() and Destroy() functions for its UI childs. - * @function - * @param {String} p_screenPath Screen URL path - * @example - * iris.screen.Destroy("#books/edit"); - */ - _Iris.screen.Destroy = _DestroyScreen; - - /** - * Copy all data-* attributes to an object. - * Remove the "data-" prefix from attribute names. - * @function - * @param {JQuery} p_$obj Object to merge - * @example - * var $obj = $("<div data-id='test' data-class='myclass'></div>") - * var params = iris.ui.JqToHash($obj); - * // return: {"id" : "test", "class" : "myclass"} - */ - _Iris.ui.JqToHash = _JqToHash; - - /** - * Set the object values to a JQuery object. - * @function - * @param {Object} p_hash Object with source values - * @param {JQuery} p_$obj JQuery object target - * @param {String[]} [p_filter] Indicates that values ​​should be copied (optional) - * @example - * iris.ui.HashToJq( - * { "class":"myclass", "other":"other_value" } - * , $obj - * , class"] - * ); // Set the $obj attribute "class" - */ - _Iris.ui.HashToJq = _HashToJq; - - /** - * Include static resources dynamically. - * The load is synchronous and tracks all the files included to prevent them to be included twice.
- * You can include:
- *
    - *
  • CSS files: style files are included by creating a link dynamically in the header of the index page.
  • - *
  • JS files: script files are included by creating a script object dynamically in the header of the index page - * and append the loaded content to it. When including javascript files you must take care of the syntax - * as including javascript file with some syntax error would produce an error when adding it to a script element.
  • - *
- * @function - * @param {arguments} File paths - * @example - * iris.Include("app/service/myservice.js", "app/css/mycss.css"); - */ - _Iris.Include = _IncludeFiles; - - /** - * Formats a Date object or timestamp to the specified format and according to the current locale.
- * You can use the following special characters:

- * a 'a.m.' or 'p.m.'
- * A 'AM' or 'PM'
- * b Month, textual, 3 letters, lowercase. 'jan'
- * d Day of the month, 2 digits with leading zeros. '01' to '31'
- * D Day of the week, textual, 3 letters. 'Fri'
- * F Month, textual, long. 'January'
- * h Hour, 12-hour format. '01' to '12'
- * H Hour, 24-hour format. '00' to '23'
- * i Minutes. '00' to '59'
- * l Day of the week, textual, long. 'Friday'
- * m Month, 2 digits with leading zeros. '01' to '12'
- * M Month, textual, 3 letters. 'Jan'
- * n Month without leading zeros. '1' to '12'
- * s Seconds, 2 digits with leading zeros. '00' to '59'
- * U Seconds since the Unix Epoch (January 1 1970 00:00:00 UTC)
- * y Year, 2 digits. '99'
- * Y Year, 4 digits. '1999'
- * @function - * @param {Date|Timestamp} p_date Date object or timestamp (UNIX timestamp) - * @param {String} [p_format] Format string (optional) - * @example - * iris.util.DateFormat(new Date(),"ymd"); - * iris.util.DateFormat("1331954654564","d/m/y h:i:s"); // 17/03/12 04:24:14 - * iris.util.DateFormat(1331954654564); - */ - _Iris.util.DateFormat = _DateFormat; - - - /** - * Formats a Number or String to Currency using the current locale defined at {@link iris.Regional}
- * @function - * @param {Number|String} p_value Number or String number - * @example - * regional = en-US - * iris.util.Currency(1234.56); -> $ 1,234.56 - * iris.util.Currency("123456789"); -> $ 123,456,789 - * regional = es-ES - * iris.util.Currency(1234.56); -> 1,234.56 € - * iris.util.Currency("123456789"); -> 123,456,789 € - */ - _Iris.util.Currency = _ParseCurrency; - - - /** - * Fill all form component with data. - * @function - * @param p_$form {JQuery Object} Form target - * @param p_data {Object} Object data source - * @example - * var data = {"name":"Jonh", "surname": "Doe"}; - * iris.util.Deserialize($form, data); - */ - _Iris.util.Deserialize = _Deserialize; - - /** - * Serialize a form data to Object. - * @function - * @param p_$form - * @example - * var data = iris.util.Serialize($form); - */ - _Iris.util.Serialize = _Serialize; - - /** - * Navigate to a screen. - * The screen must be previously added using {@link iris-_AbstractScreen#AddScreen}.
- * You can send parameters to the target screen as ... /screen?param1=value1¶m2=value2/ ..., - * remember apply encodeURIComponent() to the parameter values.
- * @function - * @param p_hashUri {String} Hash URL - * @example - * - * iris.Goto("#home/section/subsection"); - * - * // Call with screen parameters - * iris.Goto("#home/section?id=5&name=example%20name/subsection"); - * - * // Remember encode param values - * var email = encodeURIComponent("user@example.com"); - * iris.Goto("#home/section?email=" + email); - */ - _Iris.Goto = _Goto; - - /** - * Register a AddOn object. - * It must appear at the beginning of the AddOn file. - * @function - * @param {Function} f_addOn AddOn Class - * @example - * iris.AddOn( - * function (self) { - * self.Create = function ( p_uis ) { - * } - * ... - * } - * ); - */ - _Iris.AddOn = _CreateAddOn; - - /** - * Apply a AddOn to a group of UI components or single UI. - * @function - * @param p_id {String} AddOn identifier - * @param p_uis {Object|Array} UI Component/s - * @example - * var customUI = self.InstanceUI("input", "input.js"); - * iris.ApplyBE("validator.js", customUI); - * - * var otherCustomUI = self.InstanceUI("input", "input.js"); - * iris.ApplyAddOn("validator.js", [customUI, otherCustomUI]); - * - */ - _Iris.ApplyAddOn = _ApplyAddOn; - - /** - * Specify a new regional or change the actuals regionals to format dates and currencies. - * You must set a valid regional object with all properties: 'dayNames', 'monthNames', etc...
- * Iris has two predefined regionals: - *
    "en-US" : {
-     *         dayNames : ["Sunday","Monday","Tuesday"
-     *                ,"Wednesday","Thursday","Friday","Saturday"]
-     *        ,monthNames : ["January","February","March"
-     *                ,"April","May","June","July"
-     *                ,"August","September","October"
-     *                ,"November","December"]
-     *        ,dateFormat : "m/d/Y h:i:s"
-     *        ,currency : {
-     *             formatPos : "$ n"
-     *            ,formatNeg : "($ n)"
-     *            ,decimal : "."
-     *            ,thousand : ","
-     *            ,precision : 2
-     *        }
-     *    }
-     *    
-     *    "es-ES" : {
-     *         dayNames : ["Domingo","Lunes","Martes"
-     *            ,"Miércoles","Jueves","Viernes","Sábado"]
-     *        ,monthNames : ["Enero","Febrero","Marzo"
-     *            ,"Abril","Mayo","Junio","Julio","Agosto"
-     *            ,"Septiembre","Octubre","Noviembre","Diciembre"]
-     *        ,dateFormat : "d/m/Y H:i:s"
-     *        ,currency : {
-     *             formatPos : "n"
-     *            ,formatNeg : "-n"
-     *            ,decimal : ","
-     *            ,thousand : "."
-     *            ,precision : 2
-     *        }
-     *    }
- * @function - * @param p_locale {String} Locale identifier - * @param p_regional {Object} Regional data - * @example - * iris.Regional("custom-es_ES", { - * dayNames : ["D","L","M","M","J","V","S"] - * ,monthNames : ["Ene","Feb","Mar","Abr","May","Jun" - * ,"Jul","Ago","Sep","Oct","Nov","Dic"] - * ,dateFormat : "d/m/Y" - * ,currency : { - * formatPos : "n" - * ,formatNeg : "-n" - * ,decimal : "," - * ,thousand : "." - * ,precision : 2 - * } - * } - */ - _Iris.Regional = _AddRegional; - - - _Init(); - - return _Iris; - -})(); \ No newline at end of file diff --git a/iris-example/src/main/webapp/js/jquery-1.5.1.min.js b/iris-example/src/main/webapp/js/jquery-1.5.1.min.js deleted file mode 100644 index 6437874..0000000 --- a/iris-example/src/main/webapp/js/jquery-1.5.1.min.js +++ /dev/null @@ -1,16 +0,0 @@ -/*! - * jQuery JavaScript Library v1.5.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: Wed Feb 23 13:55:29 2011 -0500 - */ -(function(a,b){function cg(a){return d.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cd(a){if(!bZ[a]){var b=d("<"+a+">").appendTo("body"),c=b.css("display");b.remove();if(c==="none"||c==="")c="block";bZ[a]=c}return bZ[a]}function cc(a,b){var c={};d.each(cb.concat.apply([],cb.slice(0,b)),function(){c[this]=a});return c}function bY(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function bX(){try{return new a.XMLHttpRequest}catch(b){}}function bW(){d(a).unload(function(){for(var a in bU)bU[a](0,1)})}function bQ(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var e=a.dataTypes,f={},g,h,i=e.length,j,k=e[0],l,m,n,o,p;for(g=1;g=0===c})}function N(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function F(a,b){return(a&&a!=="*"?a+".":"")+b.replace(r,"`").replace(s,"&")}function E(a){var b,c,e,f,g,h,i,j,k,l,m,n,o,q=[],r=[],s=d._data(this,"events");if(a.liveFired!==this&&s&&s.live&&!a.target.disabled&&(!a.button||a.type!=="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var t=s.live.slice(0);for(i=0;ic)break;a.currentTarget=f.elem,a.data=f.handleObj.data,a.handleObj=f.handleObj,o=f.handleObj.origHandler.apply(f.elem,arguments);if(o===!1||a.isPropagationStopped()){c=f.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function C(a,c,e){var f=d.extend({},e[0]);f.type=a,f.originalEvent={},f.liveFired=b,d.event.handle.call(c,f),f.isDefaultPrevented()&&e[0].preventDefault()}function w(){return!0}function v(){return!1}function g(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function f(a,c,f){if(f===b&&a.nodeType===1){f=a.getAttribute("data-"+c);if(typeof f==="string"){try{f=f==="true"?!0:f==="false"?!1:f==="null"?null:d.isNaN(f)?e.test(f)?d.parseJSON(f):f:parseFloat(f)}catch(g){}d.data(a,c,f)}else f=b}return f}var c=a.document,d=function(){function I(){if(!d.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(I,1);return}d.ready()}}var d=function(a,b){return new d.fn.init(a,b,g)},e=a.jQuery,f=a.$,g,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,i=/\S/,j=/^\s+/,k=/\s+$/,l=/\d/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=navigator.userAgent,w,x=!1,y,z="then done fail isResolved isRejected promise".split(" "),A,B=Object.prototype.toString,C=Object.prototype.hasOwnProperty,D=Array.prototype.push,E=Array.prototype.slice,F=String.prototype.trim,G=Array.prototype.indexOf,H={};d.fn=d.prototype={constructor:d,init:function(a,e,f){var g,i,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!e&&c.body){this.context=c,this[0]=c.body,this.selector="body",this.length=1;return this}if(typeof a==="string"){g=h.exec(a);if(!g||!g[1]&&e)return!e||e.jquery?(e||f).find(a):this.constructor(e).find(a);if(g[1]){e=e instanceof d?e[0]:e,k=e?e.ownerDocument||e:c,j=m.exec(a),j?d.isPlainObject(e)?(a=[c.createElement(j[1])],d.fn.attr.call(a,e,!0)):a=[k.createElement(j[1])]:(j=d.buildFragment([g[1]],[k]),a=(j.cacheable?d.clone(j.fragment):j.fragment).childNodes);return d.merge(this,a)}i=c.getElementById(g[2]);if(i&&i.parentNode){if(i.id!==g[2])return f.find(a);this.length=1,this[0]=i}this.context=c,this.selector=a;return this}if(d.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return d.makeArray(a,this)},selector:"",jquery:"1.5.1",length:0,size:function(){return this.length},toArray:function(){return E.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var e=this.constructor();d.isArray(a)?D.apply(e,a):d.merge(e,a),e.prevObject=this,e.context=this.context,b==="find"?e.selector=this.selector+(this.selector?" ":"")+c:b&&(e.selector=this.selector+"."+b+"("+c+")");return e},each:function(a,b){return d.each(this,a,b)},ready:function(a){d.bindReady(),y.done(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(E.apply(this,arguments),"slice",E.call(arguments).join(","))},map:function(a){return this.pushStack(d.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:D,sort:[].sort,splice:[].splice},d.fn.init.prototype=d.fn,d.extend=d.fn.extend=function(){var a,c,e,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!=="object"&&!d.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;y.resolveWith(c,[d]),d.fn.trigger&&d(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!x){x=!0;if(c.readyState==="complete")return setTimeout(d.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",A,!1),a.addEventListener("load",d.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",A),a.attachEvent("onload",d.ready);var b=!1;try{b=a.frameElement==null}catch(e){}c.documentElement.doScroll&&b&&I()}}},isFunction:function(a){return d.type(a)==="function"},isArray:Array.isArray||function(a){return d.type(a)==="array"},isWindow:function(a){return a&&typeof a==="object"&&"setInterval"in a},isNaN:function(a){return a==null||!l.test(a)||isNaN(a)},type:function(a){return a==null?String(a):H[B.call(a)]||"object"},isPlainObject:function(a){if(!a||d.type(a)!=="object"||a.nodeType||d.isWindow(a))return!1;if(a.constructor&&!C.call(a,"constructor")&&!C.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a){}return c===b||C.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=="string"||!b)return null;b=d.trim(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return a.JSON&&a.JSON.parse?a.JSON.parse(b):(new Function("return "+b))();d.error("Invalid JSON: "+b)},parseXML:function(b,c,e){a.DOMParser?(e=new DOMParser,c=e.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),e=c.documentElement,(!e||!e.nodeName||e.nodeName==="parsererror")&&d.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(a){if(a&&i.test(a)){var b=c.head||c.getElementsByTagName("head")[0]||c.documentElement,e=c.createElement("script");d.support.scriptEval()?e.appendChild(c.createTextNode(a)):e.text=a,b.insertBefore(e,b.firstChild),b.removeChild(e)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,e){var f,g=0,h=a.length,i=h===b||d.isFunction(a);if(e){if(i){for(f in a)if(c.apply(a[f],e)===!1)break}else for(;g1){var f=E.call(arguments,0),g=b,h=function(a){return function(b){f[a]=arguments.length>1?E.call(arguments,0):b,--g||c.resolveWith(e,f)}};while(b--)a=f[b],a&&d.isFunction(a.promise)?a.promise().then(h(b),c.reject):--g;g||c.resolveWith(e,f)}else c!==a&&c.resolve(a);return e},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}d.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.subclass=this.subclass,a.fn.init=function b(b,c){c&&c instanceof d&&!(c instanceof a)&&(c=a(c));return d.fn.init.call(this,b,c,e)},a.fn.init.prototype=a.fn;var e=a(c);return a},browser:{}}),y=d._Deferred(),d.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){H["[object "+b+"]"]=b.toLowerCase()}),w=d.uaMatch(v),w.browser&&(d.browser[w.browser]=!0,d.browser.version=w.version),d.browser.webkit&&(d.browser.safari=!0),G&&(d.inArray=function(a,b){return G.call(b,a)}),i.test(" ")&&(j=/^[\s\xA0]+/,k=/[\s\xA0]+$/),g=d(c),c.addEventListener?A=function(){c.removeEventListener("DOMContentLoaded",A,!1),d.ready()}:c.attachEvent&&(A=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",A),d.ready())});return d}();(function(){d.support={};var b=c.createElement("div");b.style.display="none",b.innerHTML="
a";var e=b.getElementsByTagName("*"),f=b.getElementsByTagName("a")[0],g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=b.getElementsByTagName("input")[0];if(e&&e.length&&f){d.support={leadingWhitespace:b.firstChild.nodeType===3,tbody:!b.getElementsByTagName("tbody").length,htmlSerialize:!!b.getElementsByTagName("link").length,style:/red/.test(f.getAttribute("style")),hrefNormalized:f.getAttribute("href")==="/a",opacity:/^0.55$/.test(f.style.opacity),cssFloat:!!f.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,deleteExpando:!0,optDisabled:!1,checkClone:!1,noCloneEvent:!0,noCloneChecked:!0,boxModel:null,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableHiddenOffsets:!0},i.checked=!0,d.support.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,d.support.optDisabled=!h.disabled;var j=null;d.support.scriptEval=function(){if(j===null){var b=c.documentElement,e=c.createElement("script"),f="script"+d.now();try{e.appendChild(c.createTextNode("window."+f+"=1;"))}catch(g){}b.insertBefore(e,b.firstChild),a[f]?(j=!0,delete a[f]):j=!1,b.removeChild(e),b=e=f=null}return j};try{delete b.test}catch(k){d.support.deleteExpando=!1}!b.addEventListener&&b.attachEvent&&b.fireEvent&&(b.attachEvent("onclick",function l(){d.support.noCloneEvent=!1,b.detachEvent("onclick",l)}),b.cloneNode(!0).fireEvent("onclick")),b=c.createElement("div"),b.innerHTML="";var m=c.createDocumentFragment();m.appendChild(b.firstChild),d.support.checkClone=m.cloneNode(!0).cloneNode(!0).lastChild.checked,d(function(){var a=c.createElement("div"),b=c.getElementsByTagName("body")[0];if(b){a.style.width=a.style.paddingLeft="1px",b.appendChild(a),d.boxModel=d.support.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,d.support.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",d.support.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
";var e=a.getElementsByTagName("td");d.support.reliableHiddenOffsets=e[0].offsetHeight===0,e[0].style.display="",e[1].style.display="none",d.support.reliableHiddenOffsets=d.support.reliableHiddenOffsets&&e[0].offsetHeight===0,a.innerHTML="",b.removeChild(a).style.display="none",a=e=null}});var n=function(a){var b=c.createElement("div");a="on"+a;if(!b.attachEvent)return!0;var d=a in b;d||(b.setAttribute(a,"return;"),d=typeof b[a]==="function"),b=null;return d};d.support.submitBubbles=n("submit"),d.support.changeBubbles=n("change"),b=e=f=null}})();var e=/^(?:\{.*\}|\[.*\])$/;d.extend({cache:{},uuid:0,expando:"jQuery"+(d.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?d.cache[a[d.expando]]:a[d.expando];return!!a&&!g(a)},data:function(a,c,e,f){if(d.acceptData(a)){var g=d.expando,h=typeof c==="string",i,j=a.nodeType,k=j?d.cache:a,l=j?a[d.expando]:a[d.expando]&&d.expando;if((!l||f&&l&&!k[l][g])&&h&&e===b)return;l||(j?a[d.expando]=l=++d.uuid:l=d.expando),k[l]||(k[l]={},j||(k[l].toJSON=d.noop));if(typeof c==="object"||typeof c==="function")f?k[l][g]=d.extend(k[l][g],c):k[l]=d.extend(k[l],c);i=k[l],f&&(i[g]||(i[g]={}),i=i[g]),e!==b&&(i[c]=e);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[c]:i}},removeData:function(b,c,e){if(d.acceptData(b)){var f=d.expando,h=b.nodeType,i=h?d.cache:b,j=h?b[d.expando]:d.expando;if(!i[j])return;if(c){var k=e?i[j][f]:i[j];if(k){delete k[c];if(!g(k))return}}if(e){delete i[j][f];if(!g(i[j]))return}var l=i[j][f];d.support.deleteExpando||i!=a?delete i[j]:i[j]=null,l?(i[j]={},h||(i[j].toJSON=d.noop),i[j][f]=l):h&&(d.support.deleteExpando?delete b[d.expando]:b.removeAttribute?b.removeAttribute(d.expando):b[d.expando]=null)}},_data:function(a,b,c){return d.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=d.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),d.fn.extend({data:function(a,c){var e=null;if(typeof a==="undefined"){if(this.length){e=d.data(this[0]);if(this[0].nodeType===1){var g=this[0].attributes,h;for(var i=0,j=g.length;i-1)return!0;return!1},val:function(a){if(!arguments.length){var c=this[0];if(c){if(d.nodeName(c,"option")){var e=c.attributes.value;return!e||e.specified?c.value:c.text}if(d.nodeName(c,"select")){var f=c.selectedIndex,g=[],h=c.options,i=c.type==="select-one";if(f<0)return null;for(var k=i?f:0,l=i?f+1:h.length;k=0;else if(d.nodeName(this,"select")){var f=d.makeArray(e);d("option",this).each(function(){this.selected=d.inArray(d(this).val(),f)>=0}),f.length||(this.selectedIndex=-1)}else this.value=e}})}}),d.extend({attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,e,f){if(!a||a.nodeType===3||a.nodeType===8||a.nodeType===2)return b;if(f&&c in d.attrFn)return d(a)[c](e);var g=a.nodeType!==1||!d.isXMLDoc(a),h=e!==b;c=g&&d.props[c]||c;if(a.nodeType===1){var i=k.test(c);if(c==="selected"&&!d.support.optSelected){var j=a.parentNode;j&&(j.selectedIndex,j.parentNode&&j.parentNode.selectedIndex)}if((c in a||a[c]!==b)&&g&&!i){h&&(c==="type"&&l.test(a.nodeName)&&a.parentNode&&d.error("type property can't be changed"),e===null?a.nodeType===1&&a.removeAttribute(c):a[c]=e);if(d.nodeName(a,"form")&&a.getAttributeNode(c))return a.getAttributeNode(c).nodeValue;if(c==="tabIndex"){var o=a.getAttributeNode("tabIndex");return o&&o.specified?o.value:m.test(a.nodeName)||n.test(a.nodeName)&&a.href?0:b}return a[c]}if(!d.support.style&&g&&c==="style"){h&&(a.style.cssText=""+e);return a.style.cssText}h&&a.setAttribute(c,""+e);if(!a.attributes[c]&&(a.hasAttribute&&!a.hasAttribute(c)))return b;var p=!d.support.hrefNormalized&&g&&i?a.getAttribute(c,2):a.getAttribute(c);return p===null?b:p}h&&(a[c]=e);return a[c]}});var p=/\.(.*)$/,q=/^(?:textarea|input|select)$/i,r=/\./g,s=/ /g,t=/[^\w\s.|`]/g,u=function(a){return a.replace(t,"\\$&")};d.event={add:function(c,e,f,g){if(c.nodeType!==3&&c.nodeType!==8){try{d.isWindow(c)&&(c!==a&&!c.frameElement)&&(c=a)}catch(h){}if(f===!1)f=v;else if(!f)return;var i,j;f.handler&&(i=f,f=i.handler),f.guid||(f.guid=d.guid++);var k=d._data(c);if(!k)return;var l=k.events,m=k.handle;l||(k.events=l={}),m||(k.handle=m=function(){return typeof d!=="undefined"&&!d.event.triggered?d.event.handle.apply(m.elem,arguments):b}),m.elem=c,e=e.split(" ");var n,o=0,p;while(n=e[o++]){j=i?d.extend({},i):{handler:f,data:g},n.indexOf(".")>-1?(p=n.split("."),n=p.shift(),j.namespace=p.slice(0).sort().join(".")):(p=[],j.namespace=""),j.type=n,j.guid||(j.guid=f.guid);var q=l[n],r=d.event.special[n]||{};if(!q){q=l[n]=[];if(!r.setup||r.setup.call(c,g,p,m)===!1)c.addEventListener?c.addEventListener(n,m,!1):c.attachEvent&&c.attachEvent("on"+n,m)}r.add&&(r.add.call(c,j),j.handler.guid||(j.handler.guid=f.guid)),q.push(j),d.event.global[n]=!0}c=null}},global:{},remove:function(a,c,e,f){if(a.nodeType!==3&&a.nodeType!==8){e===!1&&(e=v);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=d.hasData(a)&&d._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(e=c.handler,c=c.type);if(!c||typeof c==="string"&&c.charAt(0)==="."){c=c||"";for(h in t)d.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+d.map(m.slice(0).sort(),u).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!e){for(j=0;j=0&&(a.type=f=f.slice(0,-1),a.exclusive=!0),e||(a.stopPropagation(),d.event.global[f]&&d.each(d.cache,function(){var b=d.expando,e=this[b];e&&e.events&&e.events[f]&&d.event.trigger(a,c,e.handle.elem)}));if(!e||e.nodeType===3||e.nodeType===8)return b;a.result=b,a.target=e,c=d.makeArray(c),c.unshift(a)}a.currentTarget=e;var h=d._data(e,"handle");h&&h.apply(e,c);var i=e.parentNode||e.ownerDocument;try{e&&e.nodeName&&d.noData[e.nodeName.toLowerCase()]||e["on"+f]&&e["on"+f].apply(e,c)===!1&&(a.result=!1,a.preventDefault())}catch(j){}if(!a.isPropagationStopped()&&i)d.event.trigger(a,c,i,!0);else if(!a.isDefaultPrevented()){var k,l=a.target,m=f.replace(p,""),n=d.nodeName(l,"a")&&m==="click",o=d.event.special[m]||{};if((!o._default||o._default.call(e,a)===!1)&&!n&&!(l&&l.nodeName&&d.noData[l.nodeName.toLowerCase()])){try{l[m]&&(k=l["on"+m],k&&(l["on"+m]=null),d.event.triggered=!0,l[m]())}catch(q){}k&&(l["on"+m]=k),d.event.triggered=!1}}},handle:function(c){var e,f,g,h,i,j=[],k=d.makeArray(arguments);c=k[0]=d.event.fix(c||a.event),c.currentTarget=this,e=c.type.indexOf(".")<0&&!c.exclusive,e||(g=c.type.split("."),c.type=g.shift(),j=g.slice(0).sort(),h=new RegExp("(^|\\.)"+j.join("\\.(?:.*\\.)?")+"(\\.|$)")),c.namespace=c.namespace||j.join("."),i=d._data(this,"events"),f=(i||{})[c.type];if(i&&f){f=f.slice(0);for(var l=0,m=f.length;l-1?d.map(a.options,function(a){return a.selected}).join("-"):"":a.nodeName.toLowerCase()==="select"&&(c=a.selectedIndex);return c},B=function B(a){var c=a.target,e,f;if(q.test(c.nodeName)&&!c.readOnly){e=d._data(c,"_change_data"),f=A(c),(a.type!=="focusout"||c.type!=="radio")&&d._data(c,"_change_data",f);if(e===b||f===e)return;if(e!=null||f)a.type="change",a.liveFired=b,d.event.trigger(a,arguments[1],c)}};d.event.special.change={filters:{focusout:B,beforedeactivate:B,click:function(a){var b=a.target,c=b.type;(c==="radio"||c==="checkbox"||b.nodeName.toLowerCase()==="select")&&B.call(this,a)},keydown:function(a){var b=a.target,c=b.type;(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&B.call(this,a)},beforeactivate:function(a){var b=a.target;d._data(b,"_change_data",A(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in z)d.event.add(this,c+".specialChange",z[c]);return q.test(this.nodeName)},teardown:function(a){d.event.remove(this,".specialChange");return q.test(this.nodeName)}},z=d.event.special.change.filters,z.focus=z.beforeactivate}c.addEventListener&&d.each({focus:"focusin",blur:"focusout"},function(a,b){function c(a){a=d.event.fix(a),a.type=b;return d.event.handle.call(this,a)}d.event.special[b]={setup:function(){this.addEventListener(a,c,!0)},teardown:function(){this.removeEventListener(a,c,!0)}}}),d.each(["bind","one"],function(a,c){d.fn[c]=function(a,e,f){if(typeof a==="object"){for(var g in a)this[c](g,e,a[g],f);return this}if(d.isFunction(e)||e===!1)f=e,e=b;var h=c==="one"?d.proxy(f,function(a){d(this).unbind(a,h);return f.apply(this,arguments)}):f;if(a==="unload"&&c!=="one")this.one(a,e,f);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},d.attrFn&&(d.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,e,g){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!=="string")return e;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(f.call(n)==="[object Array]")if(u)if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&e.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&e.push(j[t]);else e.push.apply(e,n);else p(n,e);o&&(k(o,h,e,g),k.uniqueSort(e));return e};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b==="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){return"text"===a.getAttribute("type")},radio:function(a){return"radio"===a.type},checkbox:function(a){return"checkbox"===a.type},file:function(a){return"file"===a.type},password:function(a){return"password"===a.type},submit:function(a){return"submit"===a.type},image:function(a){return"image"===a.type},reset:function(a){return"reset"===a.type},button:function(a){return"button"===a.type||a.nodeName.toLowerCase()==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(f.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length==="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!=="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!=="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector,d=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(e){d=!0}b&&(k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(d||!l.match.PSEUDO.test(c)&&!/!=/.test(c))return b.call(a,c)}catch(e){}return k(c,null,null,[a]).length>0})}(),function(){var a=c.createElement("div");a.innerHTML="
";if(a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(var g=c;g0},closest:function(a,b){var c=[],e,f,g=this[0];if(d.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(e=0,f=a.length;e-1:d(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=L.test(a)?d(a,b||this.context):null;for(e=0,f=this.length;e-1:d.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b)break}}c=c.length>1?d.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a==="string")return d.inArray(this[0],a?d(a):this.parent().children());return d.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==="string"?d(a,b):d.makeArray(a),e=d.merge(this.get(),c);return this.pushStack(N(c[0])||N(e[0])?e:d.unique(e))},andSelf:function(){return this.add(this.prevObject)}}),d.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return d.dir(a,"parentNode")},parentsUntil:function(a,b,c){return d.dir(a,"parentNode",c)},next:function(a){return d.nth(a,2,"nextSibling")},prev:function(a){return d.nth(a,2,"previousSibling")},nextAll:function(a){return d.dir(a,"nextSibling")},prevAll:function(a){return d.dir(a,"previousSibling")},nextUntil:function(a,b,c){return d.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return d.dir(a,"previousSibling",c)},siblings:function(a){return d.sibling(a.parentNode.firstChild,a)},children:function(a){return d.sibling(a.firstChild)},contents:function(a){return d.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:d.makeArray(a.childNodes)}},function(a,b){d.fn[a]=function(c,e){var f=d.map(this,b,c),g=K.call(arguments);G.test(a)||(e=c),e&&typeof e==="string"&&(f=d.filter(e,f)),f=this.length>1&&!M[a]?d.unique(f):f,(this.length>1||I.test(e))&&H.test(a)&&(f=f.reverse());return this.pushStack(f,a,g.join(","))}}),d.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?d.find.matchesSelector(b[0],a)?[b[0]]:[]:d.find.matches(a,b)},dir:function(a,c,e){var f=[],g=a[c];while(g&&g.nodeType!==9&&(e===b||g.nodeType!==1||!d(g).is(e)))g.nodeType===1&&f.push(g),g=g[c];return f},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var P=/ jQuery\d+="(?:\d+|null)"/g,Q=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,S=/<([\w:]+)/,T=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};X.optgroup=X.option,X.tbody=X.tfoot=X.colgroup=X.caption=X.thead,X.th=X.td,d.support.htmlSerialize||(X._default=[1,"div
","
"]),d.fn.extend({text:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.text(a.call(this,b,c.text()))});if(typeof a!=="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return d.text(this)},wrapAll:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapAll(a.call(this,b))});if(this[0]){var b=d(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapInner(a.call(this,b))});return this.each(function(){var b=d(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){d(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){d.nodeName(this,"body")||d(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=d(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,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,d(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,e;(e=this[c])!=null;c++)if(!a||d.filter(a,[e]).length)!b&&e.nodeType===1&&(d.cleanData(e.getElementsByTagName("*")),d.cleanData([e])),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&d.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return d.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(P,""):null;if(typeof a!=="string"||V.test(a)||!d.support.leadingWhitespace&&Q.test(a)||X[(S.exec(a)||["",""])[1].toLowerCase()])d.isFunction(a)?this.each(function(b){var c=d(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);else{a=a.replace(R,"<$1>");try{for(var c=0,e=this.length;c1&&l0?this.clone(!0):this).get();d(f[h])[b](j),e=e.concat(j)}return this.pushStack(e,a,f.selector)}}),d.extend({clone:function(a,b,c){var e=a.cloneNode(!0),f,g,h;if((!d.support.noCloneEvent||!d.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!d.isXMLDoc(a)){$(a,e),f=_(a),g=_(e);for(h=0;f[h];++h)$(f[h],g[h])}if(b){Z(a,e);if(c){f=_(a),g=_(e);for(h=0;f[h];++h)Z(f[h],g[h])}}return e},clean:function(a,b,e,f){b=b||c,typeof b.createElement==="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var g=[];for(var h=0,i;(i=a[h])!=null;h++){typeof i==="number"&&(i+="");if(!i)continue;if(typeof i!=="string"||U.test(i)){if(typeof i==="string"){i=i.replace(R,"<$1>");var j=(S.exec(i)||["",""])[1].toLowerCase(),k=X[j]||X._default,l=k[0],m=b.createElement("div");m.innerHTML=k[1]+i+k[2];while(l--)m=m.lastChild;if(!d.support.tbody){var n=T.test(i),o=j==="table"&&!n?m.firstChild&&m.firstChild.childNodes:k[1]===""&&!n?m.childNodes:[];for(var p=o.length-1;p>=0;--p)d.nodeName(o[p],"tbody")&&!o[p].childNodes.length&&o[p].parentNode.removeChild(o[p])}!d.support.leadingWhitespace&&Q.test(i)&&m.insertBefore(b.createTextNode(Q.exec(i)[0]),m.firstChild),i=m.childNodes}}else i=b.createTextNode(i);i.nodeType?g.push(i):g=d.merge(g,i)}if(e)for(h=0;g[h];h++)!f||!d.nodeName(g[h],"script")||g[h].type&&g[h].type.toLowerCase()!=="text/javascript"?(g[h].nodeType===1&&g.splice.apply(g,[h+1,0].concat(d.makeArray(g[h].getElementsByTagName("script")))),e.appendChild(g[h])):f.push(g[h].parentNode?g[h].parentNode.removeChild(g[h]):g[h]);return g},cleanData:function(a){var b,c,e=d.cache,f=d.expando,g=d.event.special,h=d.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&d.noData[j.nodeName.toLowerCase()])continue;c=j[d.expando];if(c){b=e[c]&&e[c][f];if(b&&b.events){for(var k in b.events)g[k]?d.event.remove(j,k):d.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[d.expando]:j.removeAttribute&&j.removeAttribute(d.expando),delete e[c]}}}});var bb=/alpha\([^)]*\)/i,bc=/opacity=([^)]*)/,bd=/-([a-z])/ig,be=/([A-Z])/g,bf=/^-?\d+(?:px)?$/i,bg=/^-?\d/,bh={position:"absolute",visibility:"hidden",display:"block"},bi=["Left","Right"],bj=["Top","Bottom"],bk,bl,bm,bn=function(a,b){return b.toUpperCase()};d.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return d.access(this,a,c,!0,function(a,c,e){return e!==b?d.style(a,c,e):d.css(a,c)})},d.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bk(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0},cssProps:{"float":d.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,e,f){if(a&&a.nodeType!==3&&a.nodeType!==8&&a.style){var g,h=d.camelCase(c),i=a.style,j=d.cssHooks[h];c=d.cssProps[h]||h;if(e===b){if(j&&"get"in j&&(g=j.get(a,!1,f))!==b)return g;return i[c]}if(typeof e==="number"&&isNaN(e)||e==null)return;typeof e==="number"&&!d.cssNumber[h]&&(e+="px");if(!j||!("set"in j)||(e=j.set(a,e))!==b)try{i[c]=e}catch(k){}}},css:function(a,c,e){var f,g=d.camelCase(c),h=d.cssHooks[g];c=d.cssProps[g]||g;if(h&&"get"in h&&(f=h.get(a,!0,e))!==b)return f;if(bk)return bk(a,c,g)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){return a.replace(bd,bn)}}),d.curCSS=d.css,d.each(["height","width"],function(a,b){d.cssHooks[b]={get:function(a,c,e){var f;if(c){a.offsetWidth!==0?f=bo(a,b,e):d.swap(a,bh,function(){f=bo(a,b,e)});if(f<=0){f=bk(a,b,b),f==="0px"&&bm&&(f=bm(a,b,b));if(f!=null)return f===""||f==="auto"?"0px":f}if(f<0||f==null){f=a.style[b];return f===""||f==="auto"?"0px":f}return typeof f==="string"?f:f+"px"}},set:function(a,b){if(!bf.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),d.support.opacity||(d.cssHooks.opacity={get:function(a,b){return bc.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style;c.zoom=1;var e=d.isNaN(b)?"":"alpha(opacity="+b*100+")",f=c.filter||"";c.filter=bb.test(f)?f.replace(bb,e):c.filter+" "+e}}),c.defaultView&&c.defaultView.getComputedStyle&&(bl=function(a,c,e){var f,g,h;e=e.replace(be,"-$1").toLowerCase();if(!(g=a.ownerDocument.defaultView))return b;if(h=g.getComputedStyle(a,null))f=h.getPropertyValue(e),f===""&&!d.contains(a.ownerDocument.documentElement,a)&&(f=d.style(a,e));return f}),c.documentElement.currentStyle&&(bm=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bf.test(d)&&bg.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bk=bl||bm,d.expr&&d.expr.filters&&(d.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!d.support.reliableHiddenOffsets&&(a.style.display||d.css(a,"display"))==="none"},d.expr.filters.visible=function(a){return!d.expr.filters.hidden(a)});var bp=/%20/g,bq=/\[\]$/,br=/\r?\n/g,bs=/#.*$/,bt=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bu=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bv=/(?:^file|^widget|\-extension):$/,bw=/^(?:GET|HEAD)$/,bx=/^\/\//,by=/\?/,bz=/)<[^<]*)*<\/script>/gi,bA=/^(?:select|textarea)/i,bB=/\s+/,bC=/([?&])_=[^&]*/,bD=/(^|\-)([a-z])/g,bE=function(a,b,c){return b+c.toUpperCase()},bF=/^([\w\+\.\-]+:)\/\/([^\/?#:]*)(?::(\d+))?/,bG=d.fn.load,bH={},bI={},bJ,bK;try{bJ=c.location.href}catch(bL){bJ=c.createElement("a"),bJ.href="",bJ=bJ.href}bK=bF.exec(bJ.toLowerCase()),d.fn.extend({load:function(a,c,e){if(typeof a!=="string"&&bG)return bG.apply(this,arguments);if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var g=a.slice(f,a.length);a=a.slice(0,f)}var h="GET";c&&(d.isFunction(c)?(e=c,c=b):typeof c==="object"&&(c=d.param(c,d.ajaxSettings.traditional),h="POST"));var i=this;d.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?d("
").append(c.replace(bz,"")).find(g):c)),e&&i.each(e,[c,b,a])}});return this},serialize:function(){return d.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?d.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bA.test(this.nodeName)||bu.test(this.type))}).map(function(a,b){var c=d(this).val();return c==null?null:d.isArray(c)?d.map(c,function(a,c){return{name:b.name,value:a.replace(br,"\r\n")}}):{name:b.name,value:c.replace(br,"\r\n")}}).get()}}),d.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){d.fn[b]=function(a){return this.bind(b,a)}}),d.each(["get","post"],function(a,c){d[c]=function(a,e,f,g){d.isFunction(e)&&(g=g||f,f=e,e=b);return d.ajax({type:c,url:a,data:e,success:f,dataType:g})}}),d.extend({getScript:function(a,c){return d.get(a,b,c,"script")},getJSON:function(a,b,c){return d.get(a,b,c,"json")},ajaxSetup:function(a,b){b?d.extend(!0,a,d.ajaxSettings,b):(b=a,a=d.extend(!0,d.ajaxSettings,b));for(var c in {context:1,url:1})c in b?a[c]=b[c]:c in d.ajaxSettings&&(a[c]=d.ajaxSettings[c]);return a},ajaxSettings:{url:bJ,isLocal:bv.test(bK[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":d.parseJSON,"text xml":d.parseXML}},ajaxPrefilter:bM(bH),ajaxTransport:bM(bI),ajax:function(a,c){function v(a,c,l,n){if(r!==2){r=2,p&&clearTimeout(p),o=b,m=n||"",u.readyState=a?4:0;var q,t,v,w=l?bP(e,u,l):b,x,y;if(a>=200&&a<300||a===304){if(e.ifModified){if(x=u.getResponseHeader("Last-Modified"))d.lastModified[k]=x;if(y=u.getResponseHeader("Etag"))d.etag[k]=y}if(a===304)c="notmodified",q=!0;else try{t=bQ(e,w),c="success",q=!0}catch(z){c="parsererror",v=z}}else{v=c;if(!c||a)c="error",a<0&&(a=0)}u.status=a,u.statusText=c,q?h.resolveWith(f,[t,c,u]):h.rejectWith(f,[u,c,v]),u.statusCode(j),j=b,s&&g.trigger("ajax"+(q?"Success":"Error"),[u,e,q?t:v]),i.resolveWith(f,[u,c]),s&&(g.trigger("ajaxComplete",[u,e]),--d.active||d.event.trigger("ajaxStop"))}}typeof a==="object"&&(c=a,a=b),c=c||{};var e=d.ajaxSetup({},c),f=e.context||e,g=f!==e&&(f.nodeType||f instanceof d)?d(f):d.event,h=d.Deferred(),i=d._Deferred(),j=e.statusCode||{},k,l={},m,n,o,p,q,r=0,s,t,u={readyState:0,setRequestHeader:function(a,b){r||(l[a.toLowerCase().replace(bD,bE)]=b);return this},getAllResponseHeaders:function(){return r===2?m:null},getResponseHeader:function(a){var c;if(r===2){if(!n){n={};while(c=bt.exec(m))n[c[1].toLowerCase()]=c[2]}c=n[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){r||(e.mimeType=a);return this},abort:function(a){a=a||"abort",o&&o.abort(a),v(0,a);return this}};h.promise(u),u.success=u.done,u.error=u.fail,u.complete=i.done,u.statusCode=function(a){if(a){var b;if(r<2)for(b in a)j[b]=[j[b],a[b]];else b=a[u.status],u.then(b,b)}return this},e.url=((a||e.url)+"").replace(bs,"").replace(bx,bK[1]+"//"),e.dataTypes=d.trim(e.dataType||"*").toLowerCase().split(bB),e.crossDomain||(q=bF.exec(e.url.toLowerCase()),e.crossDomain=q&&(q[1]!=bK[1]||q[2]!=bK[2]||(q[3]||(q[1]==="http:"?80:443))!=(bK[3]||(bK[1]==="http:"?80:443)))),e.data&&e.processData&&typeof e.data!=="string"&&(e.data=d.param(e.data,e.traditional)),bN(bH,e,c,u);if(r===2)return!1;s=e.global,e.type=e.type.toUpperCase(),e.hasContent=!bw.test(e.type),s&&d.active++===0&&d.event.trigger("ajaxStart");if(!e.hasContent){e.data&&(e.url+=(by.test(e.url)?"&":"?")+e.data),k=e.url;if(e.cache===!1){var w=d.now(),x=e.url.replace(bC,"$1_="+w);e.url=x+(x===e.url?(by.test(e.url)?"&":"?")+"_="+w:"")}}if(e.data&&e.hasContent&&e.contentType!==!1||c.contentType)l["Content-Type"]=e.contentType;e.ifModified&&(k=k||e.url,d.lastModified[k]&&(l["If-Modified-Since"]=d.lastModified[k]),d.etag[k]&&(l["If-None-Match"]=d.etag[k])),l.Accept=e.dataTypes[0]&&e.accepts[e.dataTypes[0]]?e.accepts[e.dataTypes[0]]+(e.dataTypes[0]!=="*"?", */*; q=0.01":""):e.accepts["*"];for(t in e.headers)u.setRequestHeader(t,e.headers[t]);if(e.beforeSend&&(e.beforeSend.call(f,u,e)===!1||r===2)){u.abort();return!1}for(t in {success:1,error:1,complete:1})u[t](e[t]);o=bN(bI,e,c,u);if(o){u.readyState=1,s&&g.trigger("ajaxSend",[u,e]),e.async&&e.timeout>0&&(p=setTimeout(function(){u.abort("timeout")},e.timeout));try{r=1,o.send(l,v)}catch(y){status<2?v(-1,y):d.error(y)}}else v(-1,"No Transport");return u},param:function(a,c){var e=[],f=function(a,b){b=d.isFunction(b)?b():b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=d.ajaxSettings.traditional);if(d.isArray(a)||a.jquery&&!d.isPlainObject(a))d.each(a,function(){f(this.name,this.value)});else for(var g in a)bO(g,a[g],c,f);return e.join("&").replace(bp,"+")}}),d.extend({active:0,lastModified:{},etag:{}});var bR=d.now(),bS=/(\=)\?(&|$)|()\?\?()/i;d.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return d.expando+"_"+bR++}}),d.ajaxPrefilter("json jsonp",function(b,c,e){var f=typeof b.data==="string";if(b.dataTypes[0]==="jsonp"||c.jsonpCallback||c.jsonp!=null||b.jsonp!==!1&&(bS.test(b.url)||f&&bS.test(b.data))){var g,h=b.jsonpCallback=d.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2",m=function(){a[h]=i,g&&d.isFunction(i)&&a[h](g[0])};b.jsonp!==!1&&(j=j.replace(bS,l),b.url===j&&(f&&(k=k.replace(bS,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},e.then(m,m),b.converters["script json"]=function(){g||d.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),d.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){d.globalEval(a);return a}}}),d.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),d.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var bT=d.now(),bU,bV;d.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&bX()||bY()}:bX,bV=d.ajaxSettings.xhr(),d.support.ajax=!!bV,d.support.cors=bV&&"withCredentials"in bV,bV=b,d.support.ajax&&d.ajaxTransport(function(a){if(!a.crossDomain||d.support.cors){var c;return{send:function(e,f){var g=a.xhr(),h,i;a.username?g.open(a.type,a.url,a.async,a.username,a.password):g.open(a.type,a.url,a.async);if(a.xhrFields)for(i in a.xhrFields)g[i]=a.xhrFields[i];a.mimeType&&g.overrideMimeType&&g.overrideMimeType(a.mimeType),(!a.crossDomain||a.hasContent)&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(i in e)g.setRequestHeader(i,e[i])}catch(j){}g.send(a.hasContent&&a.data||null),c=function(e,i){var j,k,l,m,n;try{if(c&&(i||g.readyState===4)){c=b,h&&(g.onreadystatechange=d.noop,delete bU[h]);if(i)g.readyState!==4&&g.abort();else{j=g.status,l=g.getAllResponseHeaders(),m={},n=g.responseXML,n&&n.documentElement&&(m.xml=n),m.text=g.responseText;try{k=g.statusText}catch(o){k=""}j||!a.isLocal||a.crossDomain?j===1223&&(j=204):j=m.text?200:404}}}catch(p){i||f(-1,p)}m&&f(j,k,m,l)},a.async&&g.readyState!==4?(bU||(bU={},bW()),h=bT++,g.onreadystatechange=bU[h]=c):c()},abort:function(){c&&c(0,1)}}}});var bZ={},b$=/^(?:toggle|show|hide)$/,b_=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,ca,cb=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];d.fn.extend({show:function(a,b,c){var e,f;if(a||a===0)return this.animate(cc("show",3),a,b,c);for(var g=0,h=this.length;g=0;a--)c[a].elem===this&&(b&&c[a](!0),c.splice(a,1))}),b||this.dequeue();return this}}),d.each({slideDown:cc("show",1),slideUp:cc("hide",1),slideToggle:cc("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){d.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),d.extend({speed:function(a,b,c){var e=a&&typeof a==="object"?d.extend({},a):{complete:c||!c&&b||d.isFunction(a)&&a,duration:a,easing:c&&b||b&&!d.isFunction(b)&&b};e.duration=d.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in d.fx.speeds?d.fx.speeds[e.duration]:d.fx.speeds._default,e.old=e.complete,e.complete=function(){e.queue!==!1&&d(this).dequeue(),d.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig||(b.orig={})}}),d.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(d.fx.step[this.prop]||d.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=d.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){return e.step(a)}var e=this,f=d.fx;this.startTime=d.now(),this.start=a,this.end=b,this.unit=c||this.unit||(d.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&d.timers.push(g)&&!ca&&(ca=setInterval(f.tick,f.interval))},show:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),d(this.elem).show()},hide:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=d.now(),c=!0;if(a||b>=this.options.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),this.options.curAnim[this.prop]=!0;for(var e in this.options.curAnim)this.options.curAnim[e]!==!0&&(c=!1);if(c){if(this.options.overflow!=null&&!d.support.shrinkWrapBlocks){var f=this.elem,g=this.options;d.each(["","X","Y"],function(a,b){f.style["overflow"+b]=g.overflow[a]})}this.options.hide&&d(this.elem).hide();if(this.options.hide||this.options.show)for(var h in this.options.curAnim)d.style(this.elem,h,this.options.orig[h]);this.options.complete.call(this.elem)}return!1}var i=b-this.startTime;this.state=i/this.options.duration;var j=this.options.specialEasing&&this.options.specialEasing[this.prop],k=this.options.easing||(d.easing.swing?"swing":"linear");this.pos=d.easing[j||k](this.state,i,0,1,this.options.duration),this.now=this.start+(this.end-this.start)*this.pos,this.update();return!0}},d.extend(d.fx,{tick:function(){var a=d.timers;for(var b=0;b
";d.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),e=b.firstChild,f=e.firstChild,h=e.nextSibling.firstChild.firstChild,this.doesNotAddBorder=f.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,f.style.position="fixed",f.style.top="20px",this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15,f.style.position=f.style.top="",e.style.overflow="hidden",e.style.position="relative",this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),a=b=e=f=g=h=null,d.offset.initialize=d.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;d.offset.initialize(),d.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(d.css(a,"marginTop"))||0,c+=parseFloat(d.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var e=d.css(a,"position");e==="static"&&(a.style.position="relative");var f=d(a),g=f.offset(),h=d.css(a,"top"),i=d.css(a,"left"),j=e==="absolute"&&d.inArray("auto",[h,i])>-1,k={},l={},m,n;j&&(l=f.position()),m=j?l.top:parseInt(h,10)||0,n=j?l.left:parseInt(i,10)||0,d.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):f.css(k)}},d.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),e=cf.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(d.css(a,"marginTop"))||0,c.left-=parseFloat(d.css(a,"marginLeft"))||0,e.top+=parseFloat(d.css(b[0],"borderTopWidth"))||0,e.left+=parseFloat(d.css(b[0],"borderLeftWidth"))||0;return{top:c.top-e.top,left:c.left-e.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&(!cf.test(a.nodeName)&&d.css(a,"position")==="static"))a=a.offsetParent;return a})}}),d.each(["Left","Top"],function(a,c){var e="scroll"+c;d.fn[e]=function(c){var f=this[0],g;if(!f)return null;if(c!==b)return this.each(function(){g=cg(this),g?g.scrollTo(a?d(g).scrollLeft():c,a?c:d(g).scrollTop()):this[e]=c});g=cg(f);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:d.support.boxModel&&g.document.documentElement[e]||g.document.body[e]:f[e]}}),d.each(["Height","Width"],function(a,c){var e=c.toLowerCase();d.fn["inner"+c]=function(){return this[0]?parseFloat(d.css(this[0],e,"padding")):null},d.fn["outer"+c]=function(a){return this[0]?parseFloat(d.css(this[0],e,a?"margin":"border")):null},d.fn[e]=function(a){var f=this[0];if(!f)return a==null?null:this;if(d.isFunction(a))return this.each(function(b){var c=d(this);c[e](a.call(this,b,c[e]()))});if(d.isWindow(f)){var g=f.document.documentElement["client"+c];return f.document.compatMode==="CSS1Compat"&&g||f.document.body["client"+c]||g}if(f.nodeType===9)return Math.max(f.documentElement["client"+c],f.body["scroll"+c],f.documentElement["scroll"+c],f.body["offset"+c],f.documentElement["offset"+c]);if(a===b){var h=d.css(f,e),i=parseFloat(h);return d.isNaN(i)?h:i}return this.css(e,typeof a==="string"?a:a+"px")}}),a.jQuery=a.$=d})(window); \ No newline at end of file diff --git a/iris-example/src/main/webapp/js/jquery-1.5.2.min.js b/iris-example/src/main/webapp/js/jquery-1.5.2.min.js deleted file mode 100644 index f78f96a..0000000 --- a/iris-example/src/main/webapp/js/jquery-1.5.2.min.js +++ /dev/null @@ -1,16 +0,0 @@ -/*! - * jQuery JavaScript Library v1.5.2 - * 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: Thu Mar 31 15:28:23 2011 -0400 - */ -(function(a,b){function ci(a){return d.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cf(a){if(!b_[a]){var b=d("<"+a+">").appendTo("body"),c=b.css("display");b.remove();if(c==="none"||c==="")c="block";b_[a]=c}return b_[a]}function ce(a,b){var c={};d.each(cd.concat.apply([],cd.slice(0,b)),function(){c[this]=a});return c}function b$(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function bZ(){try{return new a.XMLHttpRequest}catch(b){}}function bY(){d(a).unload(function(){for(var a in bW)bW[a](0,1)})}function bS(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var e=a.dataTypes,f={},g,h,i=e.length,j,k=e[0],l,m,n,o,p;for(g=1;g=0===c})}function P(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function H(a,b){return(a&&a!=="*"?a+".":"")+b.replace(t,"`").replace(u,"&")}function G(a){var b,c,e,f,g,h,i,j,k,l,m,n,o,p=[],q=[],s=d._data(this,"events");if(a.liveFired!==this&&s&&s.live&&!a.target.disabled&&(!a.button||a.type!=="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var t=s.live.slice(0);for(i=0;ic)break;a.currentTarget=f.elem,a.data=f.handleObj.data,a.handleObj=f.handleObj,o=f.handleObj.origHandler.apply(f.elem,arguments);if(o===!1||a.isPropagationStopped()){c=f.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function E(a,c,e){var f=d.extend({},e[0]);f.type=a,f.originalEvent={},f.liveFired=b,d.event.handle.call(c,f),f.isDefaultPrevented()&&e[0].preventDefault()}function y(){return!0}function x(){return!1}function i(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function h(a,c,e){if(e===b&&a.nodeType===1){e=a.getAttribute("data-"+c);if(typeof e==="string"){try{e=e==="true"?!0:e==="false"?!1:e==="null"?null:d.isNaN(e)?g.test(e)?d.parseJSON(e):e:parseFloat(e)}catch(f){}d.data(a,c,e)}else e=b}return e}var c=a.document,d=function(){function G(){if(!d.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(G,1);return}d.ready()}}var d=function(a,b){return new d.fn.init(a,b,g)},e=a.jQuery,f=a.$,g,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,i=/\S/,j=/^\s+/,k=/\s+$/,l=/\d/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=navigator.userAgent,w,x,y,z=Object.prototype.toString,A=Object.prototype.hasOwnProperty,B=Array.prototype.push,C=Array.prototype.slice,D=String.prototype.trim,E=Array.prototype.indexOf,F={};d.fn=d.prototype={constructor:d,init:function(a,e,f){var g,i,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!e&&c.body){this.context=c,this[0]=c.body,this.selector="body",this.length=1;return this}if(typeof a==="string"){g=h.exec(a);if(!g||!g[1]&&e)return!e||e.jquery?(e||f).find(a):this.constructor(e).find(a);if(g[1]){e=e instanceof d?e[0]:e,k=e?e.ownerDocument||e:c,j=m.exec(a),j?d.isPlainObject(e)?(a=[c.createElement(j[1])],d.fn.attr.call(a,e,!0)):a=[k.createElement(j[1])]:(j=d.buildFragment([g[1]],[k]),a=(j.cacheable?d.clone(j.fragment):j.fragment).childNodes);return d.merge(this,a)}i=c.getElementById(g[2]);if(i&&i.parentNode){if(i.id!==g[2])return f.find(a);this.length=1,this[0]=i}this.context=c,this.selector=a;return this}if(d.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return d.makeArray(a,this)},selector:"",jquery:"1.5.2",length:0,size:function(){return this.length},toArray:function(){return C.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var e=this.constructor();d.isArray(a)?B.apply(e,a):d.merge(e,a),e.prevObject=this,e.context=this.context,b==="find"?e.selector=this.selector+(this.selector?" ":"")+c:b&&(e.selector=this.selector+"."+b+"("+c+")");return e},each:function(a,b){return d.each(this,a,b)},ready:function(a){d.bindReady(),x.done(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(C.apply(this,arguments),"slice",C.call(arguments).join(","))},map:function(a){return this.pushStack(d.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:B,sort:[].sort,splice:[].splice},d.fn.init.prototype=d.fn,d.extend=d.fn.extend=function(){var a,c,e,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!=="object"&&!d.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;x.resolveWith(c,[d]),d.fn.trigger&&d(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!x){x=d._Deferred();if(c.readyState==="complete")return setTimeout(d.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",y,!1),a.addEventListener("load",d.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",y),a.attachEvent("onload",d.ready);var b=!1;try{b=a.frameElement==null}catch(e){}c.documentElement.doScroll&&b&&G()}}},isFunction:function(a){return d.type(a)==="function"},isArray:Array.isArray||function(a){return d.type(a)==="array"},isWindow:function(a){return a&&typeof a==="object"&&"setInterval"in a},isNaN:function(a){return a==null||!l.test(a)||isNaN(a)},type:function(a){return a==null?String(a):F[z.call(a)]||"object"},isPlainObject:function(a){if(!a||d.type(a)!=="object"||a.nodeType||d.isWindow(a))return!1;if(a.constructor&&!A.call(a,"constructor")&&!A.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a){}return c===b||A.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=="string"||!b)return null;b=d.trim(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return a.JSON&&a.JSON.parse?a.JSON.parse(b):(new Function("return "+b))();d.error("Invalid JSON: "+b)},parseXML:function(b,c,e){a.DOMParser?(e=new DOMParser,c=e.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),e=c.documentElement,(!e||!e.nodeName||e.nodeName==="parsererror")&&d.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(a){if(a&&i.test(a)){var b=c.head||c.getElementsByTagName("head")[0]||c.documentElement,e=c.createElement("script");d.support.scriptEval()?e.appendChild(c.createTextNode(a)):e.text=a,b.insertBefore(e,b.firstChild),b.removeChild(e)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,e){var f,g=0,h=a.length,i=h===b||d.isFunction(a);if(e){if(i){for(f in a)if(c.apply(a[f],e)===!1)break}else for(;g1?f.call(arguments,0):c,--g||h.resolveWith(h,f.call(b,0))}}var b=arguments,c=0,e=b.length,g=e,h=e<=1&&a&&d.isFunction(a.promise)?a:d.Deferred();if(e>1){for(;c
a";var e=b.getElementsByTagName("*"),f=b.getElementsByTagName("a")[0],g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=b.getElementsByTagName("input")[0];if(e&&e.length&&f){d.support={leadingWhitespace:b.firstChild.nodeType===3,tbody:!b.getElementsByTagName("tbody").length,htmlSerialize:!!b.getElementsByTagName("link").length,style:/red/.test(f.getAttribute("style")),hrefNormalized:f.getAttribute("href")==="/a",opacity:/^0.55$/.test(f.style.opacity),cssFloat:!!f.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,deleteExpando:!0,optDisabled:!1,checkClone:!1,noCloneEvent:!0,noCloneChecked:!0,boxModel:null,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableHiddenOffsets:!0,reliableMarginRight:!0},i.checked=!0,d.support.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,d.support.optDisabled=!h.disabled;var j=null;d.support.scriptEval=function(){if(j===null){var b=c.documentElement,e=c.createElement("script"),f="script"+d.now();try{e.appendChild(c.createTextNode("window."+f+"=1;"))}catch(g){}b.insertBefore(e,b.firstChild),a[f]?(j=!0,delete a[f]):j=!1,b.removeChild(e)}return j};try{delete b.test}catch(k){d.support.deleteExpando=!1}!b.addEventListener&&b.attachEvent&&b.fireEvent&&(b.attachEvent("onclick",function l(){d.support.noCloneEvent=!1,b.detachEvent("onclick",l)}),b.cloneNode(!0).fireEvent("onclick")),b=c.createElement("div"),b.innerHTML="";var m=c.createDocumentFragment();m.appendChild(b.firstChild),d.support.checkClone=m.cloneNode(!0).cloneNode(!0).lastChild.checked,d(function(){var a=c.createElement("div"),b=c.getElementsByTagName("body")[0];if(b){a.style.width=a.style.paddingLeft="1px",b.appendChild(a),d.boxModel=d.support.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,d.support.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",d.support.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
";var e=a.getElementsByTagName("td");d.support.reliableHiddenOffsets=e[0].offsetHeight===0,e[0].style.display="",e[1].style.display="none",d.support.reliableHiddenOffsets=d.support.reliableHiddenOffsets&&e[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(a.style.width="1px",a.style.marginRight="0",d.support.reliableMarginRight=(parseInt(c.defaultView.getComputedStyle(a,null).marginRight,10)||0)===0),b.removeChild(a).style.display="none",a=e=null}});var n=function(a){var b=c.createElement("div");a="on"+a;if(!b.attachEvent)return!0;var d=a in b;d||(b.setAttribute(a,"return;"),d=typeof b[a]==="function");return d};d.support.submitBubbles=n("submit"),d.support.changeBubbles=n("change"),b=e=f=null}}();var g=/^(?:\{.*\}|\[.*\])$/;d.extend({cache:{},uuid:0,expando:"jQuery"+(d.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?d.cache[a[d.expando]]:a[d.expando];return!!a&&!i(a)},data:function(a,c,e,f){if(d.acceptData(a)){var g=d.expando,h=typeof c==="string",i,j=a.nodeType,k=j?d.cache:a,l=j?a[d.expando]:a[d.expando]&&d.expando;if((!l||f&&l&&!k[l][g])&&h&&e===b)return;l||(j?a[d.expando]=l=++d.uuid:l=d.expando),k[l]||(k[l]={},j||(k[l].toJSON=d.noop));if(typeof c==="object"||typeof c==="function")f?k[l][g]=d.extend(k[l][g],c):k[l]=d.extend(k[l],c);i=k[l],f&&(i[g]||(i[g]={}),i=i[g]),e!==b&&(i[c]=e);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[c]:i}},removeData:function(b,c,e){if(d.acceptData(b)){var f=d.expando,g=b.nodeType,h=g?d.cache:b,j=g?b[d.expando]:d.expando;if(!h[j])return;if(c){var k=e?h[j][f]:h[j];if(k){delete k[c];if(!i(k))return}}if(e){delete h[j][f];if(!i(h[j]))return}var l=h[j][f];d.support.deleteExpando||h!=a?delete h[j]:h[j]=null,l?(h[j]={},g||(h[j].toJSON=d.noop),h[j][f]=l):g&&(d.support.deleteExpando?delete b[d.expando]:b.removeAttribute?b.removeAttribute(d.expando):b[d.expando]=null)}},_data:function(a,b,c){return d.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=d.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),d.fn.extend({data:function(a,c){var e=null;if(typeof a==="undefined"){if(this.length){e=d.data(this[0]);if(this[0].nodeType===1){var f=this[0].attributes,g;for(var i=0,j=f.length;i-1)return!0;return!1},val:function(a){if(!arguments.length){var c=this[0];if(c){if(d.nodeName(c,"option")){var e=c.attributes.value;return!e||e.specified?c.value:c.text}if(d.nodeName(c,"select")){var f=c.selectedIndex,g=[],h=c.options,i=c.type==="select-one";if(f<0)return null;for(var j=i?f:0,k=i?f+1:h.length;j=0;else if(d.nodeName(this,"select")){var f=d.makeArray(e);d("option",this).each(function(){this.selected=d.inArray(d(this).val(),f)>=0}),f.length||(this.selectedIndex=-1)}else this.value=e}})}}),d.extend({attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,e,f){if(!a||a.nodeType===3||a.nodeType===8||a.nodeType===2)return b;if(f&&c in d.attrFn)return d(a)[c](e);var g=a.nodeType!==1||!d.isXMLDoc(a),h=e!==b;c=g&&d.props[c]||c;if(a.nodeType===1){var i=m.test(c);if(c==="selected"&&!d.support.optSelected){var j=a.parentNode;j&&(j.selectedIndex,j.parentNode&&j.parentNode.selectedIndex)}if((c in a||a[c]!==b)&&g&&!i){h&&(c==="type"&&n.test(a.nodeName)&&a.parentNode&&d.error("type property can't be changed"),e===null?a.nodeType===1&&a.removeAttribute(c):a[c]=e);if(d.nodeName(a,"form")&&a.getAttributeNode(c))return a.getAttributeNode(c).nodeValue;if(c==="tabIndex"){var k=a.getAttributeNode("tabIndex");return k&&k.specified?k.value:o.test(a.nodeName)||p.test(a.nodeName)&&a.href?0:b}return a[c]}if(!d.support.style&&g&&c==="style"){h&&(a.style.cssText=""+e);return a.style.cssText}h&&a.setAttribute(c,""+e);if(!a.attributes[c]&&(a.hasAttribute&&!a.hasAttribute(c)))return b;var l=!d.support.hrefNormalized&&g&&i?a.getAttribute(c,2):a.getAttribute(c);return l===null?b:l}h&&(a[c]=e);return a[c]}});var r=/\.(.*)$/,s=/^(?:textarea|input|select)$/i,t=/\./g,u=/ /g,v=/[^\w\s.|`]/g,w=function(a){return a.replace(v,"\\$&")};d.event={add:function(c,e,f,g){if(c.nodeType!==3&&c.nodeType!==8){try{d.isWindow(c)&&(c!==a&&!c.frameElement)&&(c=a)}catch(h){}if(f===!1)f=x;else if(!f)return;var i,j;f.handler&&(i=f,f=i.handler),f.guid||(f.guid=d.guid++);var k=d._data(c);if(!k)return;var l=k.events,m=k.handle;l||(k.events=l={}),m||(k.handle=m=function(a){return typeof d!=="undefined"&&d.event.triggered!==a.type?d.event.handle.apply(m.elem,arguments):b}),m.elem=c,e=e.split(" ");var n,o=0,p;while(n=e[o++]){j=i?d.extend({},i):{handler:f,data:g},n.indexOf(".")>-1?(p=n.split("."),n=p.shift(),j.namespace=p.slice(0).sort().join(".")):(p=[],j.namespace=""),j.type=n,j.guid||(j.guid=f.guid);var q=l[n],r=d.event.special[n]||{};if(!q){q=l[n]=[];if(!r.setup||r.setup.call(c,g,p,m)===!1)c.addEventListener?c.addEventListener(n,m,!1):c.attachEvent&&c.attachEvent("on"+n,m)}r.add&&(r.add.call(c,j),j.handler.guid||(j.handler.guid=f.guid)),q.push(j),d.event.global[n]=!0}c=null}},global:{},remove:function(a,c,e,f){if(a.nodeType!==3&&a.nodeType!==8){e===!1&&(e=x);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=d.hasData(a)&&d._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(e=c.handler,c=c.type);if(!c||typeof c==="string"&&c.charAt(0)==="."){c=c||"";for(h in t)d.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+d.map(m.slice(0).sort(),w).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!e){for(j=0;j=0&&(a.type=f=f.slice(0,-1),a.exclusive=!0),e||(a.stopPropagation(),d.event.global[f]&&d.each(d.cache,function(){var b=d.expando,e=this[b];e&&e.events&&e.events[f]&&d.event.trigger(a,c,e.handle.elem)}));if(!e||e.nodeType===3||e.nodeType===8)return b;a.result=b,a.target=e,c=d.makeArray(c),c.unshift(a)}a.currentTarget=e;var h=d._data(e,"handle");h&&h.apply(e,c);var i=e.parentNode||e.ownerDocument;try{e&&e.nodeName&&d.noData[e.nodeName.toLowerCase()]||e["on"+f]&&e["on"+f].apply(e,c)===!1&&(a.result=!1,a.preventDefault())}catch(j){}if(!a.isPropagationStopped()&&i)d.event.trigger(a,c,i,!0);else if(!a.isDefaultPrevented()){var k,l=a.target,m=f.replace(r,""),n=d.nodeName(l,"a")&&m==="click",o=d.event.special[m]||{};if((!o._default||o._default.call(e,a)===!1)&&!n&&!(l&&l.nodeName&&d.noData[l.nodeName.toLowerCase()])){try{l[m]&&(k=l["on"+m],k&&(l["on"+m]=null),d.event.triggered=a.type,l[m]())}catch(p){}k&&(l["on"+m]=k),d.event.triggered=b}}},handle:function(c){var e,f,g,h,i,j=[],k=d.makeArray(arguments);c=k[0]=d.event.fix(c||a.event),c.currentTarget=this,e=c.type.indexOf(".")<0&&!c.exclusive,e||(g=c.type.split("."),c.type=g.shift(),j=g.slice(0).sort(),h=new RegExp("(^|\\.)"+j.join("\\.(?:.*\\.)?")+"(\\.|$)")),c.namespace=c.namespace||j.join("."),i=d._data(this,"events"),f=(i||{})[c.type];if(i&&f){f=f.slice(0);for(var l=0,m=f.length;l-1?d.map(a.options,function(a){return a.selected}).join("-"):"":a.nodeName.toLowerCase()==="select"&&(c=a.selectedIndex);return c},D=function D(a){var c=a.target,e,f;if(s.test(c.nodeName)&&!c.readOnly){e=d._data(c,"_change_data"),f=C(c),(a.type!=="focusout"||c.type!=="radio")&&d._data(c,"_change_data",f);if(e===b||f===e)return;if(e!=null||f)a.type="change",a.liveFired=b,d.event.trigger(a,arguments[1],c)}};d.event.special.change={filters:{focusout:D,beforedeactivate:D,click:function(a){var b=a.target,c=b.type;(c==="radio"||c==="checkbox"||b.nodeName.toLowerCase()==="select")&&D.call(this,a)},keydown:function(a){var b=a.target,c=b.type;(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&D.call(this,a)},beforeactivate:function(a){var b=a.target;d._data(b,"_change_data",C(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in B)d.event.add(this,c+".specialChange",B[c]);return s.test(this.nodeName)},teardown:function(a){d.event.remove(this,".specialChange");return s.test(this.nodeName)}},B=d.event.special.change.filters,B.focus=B.beforeactivate}c.addEventListener&&d.each({focus:"focusin",blur:"focusout"},function(a,b){function f(a){var c=d.event.fix(a);c.type=b,c.originalEvent={},d.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var e=0;d.event.special[b]={setup:function(){e++===0&&c.addEventListener(a,f,!0)},teardown:function(){--e===0&&c.removeEventListener(a,f,!0)}}}),d.each(["bind","one"],function(a,c){d.fn[c]=function(a,e,f){if(typeof a==="object"){for(var g in a)this[c](g,e,a[g],f);return this}if(d.isFunction(e)||e===!1)f=e,e=b;var h=c==="one"?d.proxy(f,function(a){d(this).unbind(a,h);return f.apply(this,arguments)}):f;if(a==="unload"&&c!=="one")this.one(a,e,f);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},d.attrFn&&(d.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,e,g){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!=="string")return e;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(f.call(n)==="[object Array]")if(u)if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&e.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&e.push(j[t]);else e.push.apply(e,n);else p(n,e);o&&(k(o,h,e,g),k.uniqueSort(e));return e};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b==="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return"text"===c&&(b===c||b===null)},radio:function(a){return"radio"===a.type},checkbox:function(a){return"checkbox"===a.type},file:function(a){return"file"===a.type},password:function(a){return"password"===a.type},submit:function(a){return"submit"===a.type},image:function(a){return"image"===a.type},reset:function(a){return"reset"===a.type},button:function(a){return"button"===a.type||a.nodeName.toLowerCase()==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(f.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length==="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!=="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!=="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(var g=c;g0},closest:function(a,b){var c=[],e,f,g=this[0];if(d.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(e=0,f=a.length;e-1:d(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=N.test(a)?d(a,b||this.context):null;for(e=0,f=this.length;e-1:d.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b)break}}c=c.length>1?d.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a==="string")return d.inArray(this[0],a?d(a):this.parent().children());return d.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==="string"?d(a,b):d.makeArray(a),e=d.merge(this.get(),c);return this.pushStack(P(c[0])||P(e[0])?e:d.unique(e))},andSelf:function(){return this.add(this.prevObject)}}),d.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return d.dir(a,"parentNode")},parentsUntil:function(a,b,c){return d.dir(a,"parentNode",c)},next:function(a){return d.nth(a,2,"nextSibling")},prev:function(a){return d.nth(a,2,"previousSibling")},nextAll:function(a){return d.dir(a,"nextSibling")},prevAll:function(a){return d.dir(a,"previousSibling")},nextUntil:function(a,b,c){return d.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return d.dir(a,"previousSibling",c)},siblings:function(a){return d.sibling(a.parentNode.firstChild,a)},children:function(a){return d.sibling(a.firstChild)},contents:function(a){return d.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:d.makeArray(a.childNodes)}},function(a,b){d.fn[a]=function(c,e){var f=d.map(this,b,c),g=M.call(arguments);I.test(a)||(e=c),e&&typeof e==="string"&&(f=d.filter(e,f)),f=this.length>1&&!O[a]?d.unique(f):f,(this.length>1||K.test(e))&&J.test(a)&&(f=f.reverse());return this.pushStack(f,a,g.join(","))}}),d.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?d.find.matchesSelector(b[0],a)?[b[0]]:[]:d.find.matches(a,b)},dir:function(a,c,e){var f=[],g=a[c];while(g&&g.nodeType!==9&&(e===b||g.nodeType!==1||!d(g).is(e)))g.nodeType===1&&f.push(g),g=g[c];return f},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var R=/ jQuery\d+="(?:\d+|null)"/g,S=/^\s+/,T=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,U=/<([\w:]+)/,V=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};Z.optgroup=Z.option,Z.tbody=Z.tfoot=Z.colgroup=Z.caption=Z.thead,Z.th=Z.td,d.support.htmlSerialize||(Z._default=[1,"div
","
"]),d.fn.extend({text:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.text(a.call(this,b,c.text()))});if(typeof a!=="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return d.text(this)},wrapAll:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapAll(a.call(this,b))});if(this[0]){var b=d(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapInner(a.call(this,b))});return this.each(function(){var b=d(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){d(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){d.nodeName(this,"body")||d(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=d(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,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,d(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,e;(e=this[c])!=null;c++)if(!a||d.filter(a,[e]).length)!b&&e.nodeType===1&&(d.cleanData(e.getElementsByTagName("*")),d.cleanData([e])),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&d.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return d.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(R,""):null;if(typeof a!=="string"||X.test(a)||!d.support.leadingWhitespace&&S.test(a)||Z[(U.exec(a)||["",""])[1].toLowerCase()])d.isFunction(a)?this.each(function(b){var c=d(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);else{a=a.replace(T,"<$1>");try{for(var c=0,e=this.length;c1&&l0?this.clone(!0):this).get();d(f[h])[b](j),e=e.concat(j)}return this.pushStack(e,a,f.selector)}}),d.extend({clone:function(a,b,c){var e=a.cloneNode(!0),f,g,h;if((!d.support.noCloneEvent||!d.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!d.isXMLDoc(a)){ba(a,e),f=bb(a),g=bb(e);for(h=0;f[h];++h)ba(f[h],g[h])}if(b){_(a,e);if(c){f=bb(a),g=bb(e);for(h=0;f[h];++h)_(f[h],g[h])}}return e},clean:function(a,b,e,f){b=b||c,typeof b.createElement==="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var g=[];for(var h=0,i;(i=a[h])!=null;h++){typeof i==="number"&&(i+="");if(!i)continue;if(typeof i!=="string"||W.test(i)){if(typeof i==="string"){i=i.replace(T,"<$1>");var j=(U.exec(i)||["",""])[1].toLowerCase(),k=Z[j]||Z._default,l=k[0],m=b.createElement("div");m.innerHTML=k[1]+i+k[2];while(l--)m=m.lastChild;if(!d.support.tbody){var n=V.test(i),o=j==="table"&&!n?m.firstChild&&m.firstChild.childNodes:k[1]===""&&!n?m.childNodes:[];for(var p=o.length-1;p>=0;--p)d.nodeName(o[p],"tbody")&&!o[p].childNodes.length&&o[p].parentNode.removeChild(o[p])}!d.support.leadingWhitespace&&S.test(i)&&m.insertBefore(b.createTextNode(S.exec(i)[0]),m.firstChild),i=m.childNodes}}else i=b.createTextNode(i);i.nodeType?g.push(i):g=d.merge(g,i)}if(e)for(h=0;g[h];h++)!f||!d.nodeName(g[h],"script")||g[h].type&&g[h].type.toLowerCase()!=="text/javascript"?(g[h].nodeType===1&&g.splice.apply(g,[h+1,0].concat(d.makeArray(g[h].getElementsByTagName("script")))),e.appendChild(g[h])):f.push(g[h].parentNode?g[h].parentNode.removeChild(g[h]):g[h]);return g},cleanData:function(a){var b,c,e=d.cache,f=d.expando,g=d.event.special,h=d.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&d.noData[j.nodeName.toLowerCase()])continue;c=j[d.expando];if(c){b=e[c]&&e[c][f];if(b&&b.events){for(var k in b.events)g[k]?d.event.remove(j,k):d.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[d.expando]:j.removeAttribute&&j.removeAttribute(d.expando),delete e[c]}}}});var bd=/alpha\([^)]*\)/i,be=/opacity=([^)]*)/,bf=/-([a-z])/ig,bg=/([A-Z]|^ms)/g,bh=/^-?\d+(?:px)?$/i,bi=/^-?\d/,bj={position:"absolute",visibility:"hidden",display:"block"},bk=["Left","Right"],bl=["Top","Bottom"],bm,bn,bo,bp=function(a,b){return b.toUpperCase()};d.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return d.access(this,a,c,!0,function(a,c,e){return e!==b?d.style(a,c,e):d.css(a,c)})},d.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bm(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0},cssProps:{"float":d.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,e,f){if(a&&a.nodeType!==3&&a.nodeType!==8&&a.style){var g,h=d.camelCase(c),i=a.style,j=d.cssHooks[h];c=d.cssProps[h]||h;if(e===b){if(j&&"get"in j&&(g=j.get(a,!1,f))!==b)return g;return i[c]}if(typeof e==="number"&&isNaN(e)||e==null)return;typeof e==="number"&&!d.cssNumber[h]&&(e+="px");if(!j||!("set"in j)||(e=j.set(a,e))!==b)try{i[c]=e}catch(k){}}},css:function(a,c,e){var f,g=d.camelCase(c),h=d.cssHooks[g];c=d.cssProps[g]||g;if(h&&"get"in h&&(f=h.get(a,!0,e))!==b)return f;if(bm)return bm(a,c,g)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){return a.replace(bf,bp)}}),d.curCSS=d.css,d.each(["height","width"],function(a,b){d.cssHooks[b]={get:function(a,c,e){var f;if(c){a.offsetWidth!==0?f=bq(a,b,e):d.swap(a,bj,function(){f=bq(a,b,e)});if(f<=0){f=bm(a,b,b),f==="0px"&&bo&&(f=bo(a,b,b));if(f!=null)return f===""||f==="auto"?"0px":f}if(f<0||f==null){f=a.style[b];return f===""||f==="auto"?"0px":f}return typeof f==="string"?f:f+"px"}},set:function(a,b){if(!bh.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),d.support.opacity||(d.cssHooks.opacity={get:function(a,b){return be.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style;c.zoom=1;var e=d.isNaN(b)?"":"alpha(opacity="+b*100+")",f=c.filter||"";c.filter=bd.test(f)?f.replace(bd,e):c.filter+" "+e}}),d(function(){d.support.reliableMarginRight||(d.cssHooks.marginRight={get:function(a,b){var c;d.swap(a,{display:"inline-block"},function(){b?c=bm(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bn=function(a,c,e){var f,g,h;e=e.replace(bg,"-$1").toLowerCase();if(!(g=a.ownerDocument.defaultView))return b;if(h=g.getComputedStyle(a,null))f=h.getPropertyValue(e),f===""&&!d.contains(a.ownerDocument.documentElement,a)&&(f=d.style(a,e));return f}),c.documentElement.currentStyle&&(bo=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bh.test(d)&&bi.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bm=bn||bo,d.expr&&d.expr.filters&&(d.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!d.support.reliableHiddenOffsets&&(a.style.display||d.css(a,"display"))==="none"},d.expr.filters.visible=function(a){return!d.expr.filters.hidden(a)});var br=/%20/g,bs=/\[\]$/,bt=/\r?\n/g,bu=/#.*$/,bv=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bw=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bx=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,by=/^(?:GET|HEAD)$/,bz=/^\/\//,bA=/\?/,bB=/)<[^<]*)*<\/script>/gi,bC=/^(?:select|textarea)/i,bD=/\s+/,bE=/([?&])_=[^&]*/,bF=/(^|\-)([a-z])/g,bG=function(a,b,c){return b+c.toUpperCase()},bH=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bI=d.fn.load,bJ={},bK={},bL,bM;try{bL=c.location.href}catch(bN){bL=c.createElement("a"),bL.href="",bL=bL.href}bM=bH.exec(bL.toLowerCase())||[],d.fn.extend({load:function(a,c,e){if(typeof a!=="string"&&bI)return bI.apply(this,arguments);if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var g=a.slice(f,a.length);a=a.slice(0,f)}var h="GET";c&&(d.isFunction(c)?(e=c,c=b):typeof c==="object"&&(c=d.param(c,d.ajaxSettings.traditional),h="POST"));var i=this;d.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?d("
").append(c.replace(bB,"")).find(g):c)),e&&i.each(e,[c,b,a])}});return this},serialize:function(){return d.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?d.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bC.test(this.nodeName)||bw.test(this.type))}).map(function(a,b){var c=d(this).val();return c==null?null:d.isArray(c)?d.map(c,function(a,c){return{name:b.name,value:a.replace(bt,"\r\n")}}):{name:b.name,value:c.replace(bt,"\r\n")}}).get()}}),d.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){d.fn[b]=function(a){return this.bind(b,a)}}),d.each(["get","post"],function(a,c){d[c]=function(a,e,f,g){d.isFunction(e)&&(g=g||f,f=e,e=b);return d.ajax({type:c,url:a,data:e,success:f,dataType:g})}}),d.extend({getScript:function(a,c){return d.get(a,b,c,"script")},getJSON:function(a,b,c){return d.get(a,b,c,"json")},ajaxSetup:function(a,b){b?d.extend(!0,a,d.ajaxSettings,b):(b=a,a=d.extend(!0,d.ajaxSettings,b));for(var c in {context:1,url:1})c in b?a[c]=b[c]:c in d.ajaxSettings&&(a[c]=d.ajaxSettings[c]);return a},ajaxSettings:{url:bL,isLocal:bx.test(bM[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":d.parseJSON,"text xml":d.parseXML}},ajaxPrefilter:bO(bJ),ajaxTransport:bO(bK),ajax:function(a,c){function v(a,c,l,n){if(r!==2){r=2,p&&clearTimeout(p),o=b,m=n||"",u.readyState=a?4:0;var q,t,v,w=l?bR(e,u,l):b,x,y;if(a>=200&&a<300||a===304){if(e.ifModified){if(x=u.getResponseHeader("Last-Modified"))d.lastModified[k]=x;if(y=u.getResponseHeader("Etag"))d.etag[k]=y}if(a===304)c="notmodified",q=!0;else try{t=bS(e,w),c="success",q=!0}catch(z){c="parsererror",v=z}}else{v=c;if(!c||a)c="error",a<0&&(a=0)}u.status=a,u.statusText=c,q?h.resolveWith(f,[t,c,u]):h.rejectWith(f,[u,c,v]),u.statusCode(j),j=b,s&&g.trigger("ajax"+(q?"Success":"Error"),[u,e,q?t:v]),i.resolveWith(f,[u,c]),s&&(g.trigger("ajaxComplete",[u,e]),--d.active||d.event.trigger("ajaxStop"))}}typeof a==="object"&&(c=a,a=b),c=c||{};var e=d.ajaxSetup({},c),f=e.context||e,g=f!==e&&(f.nodeType||f instanceof d)?d(f):d.event,h=d.Deferred(),i=d._Deferred(),j=e.statusCode||{},k,l={},m,n,o,p,q,r=0,s,t,u={readyState:0,setRequestHeader:function(a,b){r||(l[a.toLowerCase().replace(bF,bG)]=b);return this},getAllResponseHeaders:function(){return r===2?m:null},getResponseHeader:function(a){var c;if(r===2){if(!n){n={};while(c=bv.exec(m))n[c[1].toLowerCase()]=c[2]}c=n[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){r||(e.mimeType=a);return this},abort:function(a){a=a||"abort",o&&o.abort(a),v(0,a);return this}};h.promise(u),u.success=u.done,u.error=u.fail,u.complete=i.done,u.statusCode=function(a){if(a){var b;if(r<2)for(b in a)j[b]=[j[b],a[b]];else b=a[u.status],u.then(b,b)}return this},e.url=((a||e.url)+"").replace(bu,"").replace(bz,bM[1]+"//"),e.dataTypes=d.trim(e.dataType||"*").toLowerCase().split(bD),e.crossDomain==null&&(q=bH.exec(e.url.toLowerCase()),e.crossDomain=q&&(q[1]!=bM[1]||q[2]!=bM[2]||(q[3]||(q[1]==="http:"?80:443))!=(bM[3]||(bM[1]==="http:"?80:443)))),e.data&&e.processData&&typeof e.data!=="string"&&(e.data=d.param(e.data,e.traditional)),bP(bJ,e,c,u);if(r===2)return!1;s=e.global,e.type=e.type.toUpperCase(),e.hasContent=!by.test(e.type),s&&d.active++===0&&d.event.trigger("ajaxStart");if(!e.hasContent){e.data&&(e.url+=(bA.test(e.url)?"&":"?")+e.data),k=e.url;if(e.cache===!1){var w=d.now(),x=e.url.replace(bE,"$1_="+w);e.url=x+(x===e.url?(bA.test(e.url)?"&":"?")+"_="+w:"")}}if(e.data&&e.hasContent&&e.contentType!==!1||c.contentType)l["Content-Type"]=e.contentType;e.ifModified&&(k=k||e.url,d.lastModified[k]&&(l["If-Modified-Since"]=d.lastModified[k]),d.etag[k]&&(l["If-None-Match"]=d.etag[k])),l.Accept=e.dataTypes[0]&&e.accepts[e.dataTypes[0]]?e.accepts[e.dataTypes[0]]+(e.dataTypes[0]!=="*"?", */*; q=0.01":""):e.accepts["*"];for(t in e.headers)u.setRequestHeader(t,e.headers[t]);if(e.beforeSend&&(e.beforeSend.call(f,u,e)===!1||r===2)){u.abort();return!1}for(t in {success:1,error:1,complete:1})u[t](e[t]);o=bP(bK,e,c,u);if(o){u.readyState=1,s&&g.trigger("ajaxSend",[u,e]),e.async&&e.timeout>0&&(p=setTimeout(function(){u.abort("timeout")},e.timeout));try{r=1,o.send(l,v)}catch(y){status<2?v(-1,y):d.error(y)}}else v(-1,"No Transport");return u},param:function(a,c){var e=[],f=function(a,b){b=d.isFunction(b)?b():b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=d.ajaxSettings.traditional);if(d.isArray(a)||a.jquery&&!d.isPlainObject(a))d.each(a,function(){f(this.name,this.value)});else for(var g in a)bQ(g,a[g],c,f);return e.join("&").replace(br,"+")}}),d.extend({active:0,lastModified:{},etag:{}});var bT=d.now(),bU=/(\=)\?(&|$)|\?\?/i;d.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return d.expando+"_"+bT++}}),d.ajaxPrefilter("json jsonp",function(b,c,e){var f=typeof b.data==="string";if(b.dataTypes[0]==="jsonp"||c.jsonpCallback||c.jsonp!=null||b.jsonp!==!1&&(bU.test(b.url)||f&&bU.test(b.data))){var g,h=b.jsonpCallback=d.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2",m=function(){a[h]=i,g&&d.isFunction(i)&&a[h](g[0])};b.jsonp!==!1&&(j=j.replace(bU,l),b.url===j&&(f&&(k=k.replace(bU,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},e.then(m,m),b.converters["script json"]=function(){g||d.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),d.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){d.globalEval(a);return a}}}),d.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),d.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var bV=d.now(),bW,bX;d.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&bZ()||b$()}:bZ,bX=d.ajaxSettings.xhr(),d.support.ajax=!!bX,d.support.cors=bX&&"withCredentials"in bX,bX=b,d.support.ajax&&d.ajaxTransport(function(a){if(!a.crossDomain||d.support.cors){var c;return{send:function(e,f){var g=a.xhr(),h,i;a.username?g.open(a.type,a.url,a.async,a.username,a.password):g.open(a.type,a.url,a.async);if(a.xhrFields)for(i in a.xhrFields)g[i]=a.xhrFields[i];a.mimeType&&g.overrideMimeType&&g.overrideMimeType(a.mimeType),!a.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(i in e)g.setRequestHeader(i,e[i])}catch(j){}g.send(a.hasContent&&a.data||null),c=function(e,i){var j,k,l,m,n;try{if(c&&(i||g.readyState===4)){c=b,h&&(g.onreadystatechange=d.noop,delete bW[h]);if(i)g.readyState!==4&&g.abort();else{j=g.status,l=g.getAllResponseHeaders(),m={},n=g.responseXML,n&&n.documentElement&&(m.xml=n),m.text=g.responseText;try{k=g.statusText}catch(o){k=""}j||!a.isLocal||a.crossDomain?j===1223&&(j=204):j=m.text?200:404}}}catch(p){i||f(-1,p)}m&&f(j,k,m,l)},a.async&&g.readyState!==4?(bW||(bW={},bY()),h=bV++,g.onreadystatechange=bW[h]=c):c()},abort:function(){c&&c(0,1)}}}});var b_={},ca=/^(?:toggle|show|hide)$/,cb=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cc,cd=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];d.fn.extend({show:function(a,b,c){var e,f;if(a||a===0)return this.animate(ce("show",3),a,b,c);for(var g=0,h=this.length;g=0;a--)c[a].elem===this&&(b&&c[a](!0),c.splice(a,1))}),b||this.dequeue();return this}}),d.each({slideDown:ce("show",1),slideUp:ce("hide",1),slideToggle:ce("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){d.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),d.extend({speed:function(a,b,c){var e=a&&typeof a==="object"?d.extend({},a):{complete:c||!c&&b||d.isFunction(a)&&a,duration:a,easing:c&&b||b&&!d.isFunction(b)&&b};e.duration=d.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in d.fx.speeds?d.fx.speeds[e.duration]:d.fx.speeds._default,e.old=e.complete,e.complete=function(){e.queue!==!1&&d(this).dequeue(),d.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig||(b.orig={})}}),d.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(d.fx.step[this.prop]||d.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=d.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){return e.step(a)}var e=this,f=d.fx;this.startTime=d.now(),this.start=a,this.end=b,this.unit=c||this.unit||(d.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&d.timers.push(g)&&!cc&&(cc=setInterval(f.tick,f.interval))},show:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),d(this.elem).show()},hide:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=d.now(),c=!0;if(a||b>=this.options.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),this.options.curAnim[this.prop]=!0;for(var e in this.options.curAnim)this.options.curAnim[e]!==!0&&(c=!1);if(c){if(this.options.overflow!=null&&!d.support.shrinkWrapBlocks){var f=this.elem,g=this.options;d.each(["","X","Y"],function(a,b){f.style["overflow"+b]=g.overflow[a]})}this.options.hide&&d(this.elem).hide();if(this.options.hide||this.options.show)for(var h in this.options.curAnim)d.style(this.elem,h,this.options.orig[h]);this.options.complete.call(this.elem)}return!1}var i=b-this.startTime;this.state=i/this.options.duration;var j=this.options.specialEasing&&this.options.specialEasing[this.prop],k=this.options.easing||(d.easing.swing?"swing":"linear");this.pos=d.easing[j||k](this.state,i,0,1,this.options.duration),this.now=this.start+(this.end-this.start)*this.pos,this.update();return!0}},d.extend(d.fx,{tick:function(){var a=d.timers;for(var b=0;b
";d.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),e=b.firstChild,f=e.firstChild,h=e.nextSibling.firstChild.firstChild,this.doesNotAddBorder=f.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,f.style.position="fixed",f.style.top="20px",this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15,f.style.position=f.style.top="",e.style.overflow="hidden",e.style.position="relative",this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),d.offset.initialize=d.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;d.offset.initialize(),d.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(d.css(a,"marginTop"))||0,c+=parseFloat(d.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var e=d.css(a,"position");e==="static"&&(a.style.position="relative");var f=d(a),g=f.offset(),h=d.css(a,"top"),i=d.css(a,"left"),j=(e==="absolute"||e==="fixed")&&d.inArray("auto",[h,i])>-1,k={},l={},m,n;j&&(l=f.position()),m=j?l.top:parseInt(h,10)||0,n=j?l.left:parseInt(i,10)||0,d.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):f.css(k)}},d.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),e=ch.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(d.css(a,"marginTop"))||0,c.left-=parseFloat(d.css(a,"marginLeft"))||0,e.top+=parseFloat(d.css(b[0],"borderTopWidth"))||0,e.left+=parseFloat(d.css(b[0],"borderLeftWidth"))||0;return{top:c.top-e.top,left:c.left-e.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&(!ch.test(a.nodeName)&&d.css(a,"position")==="static"))a=a.offsetParent;return a})}}),d.each(["Left","Top"],function(a,c){var e="scroll"+c;d.fn[e]=function(c){var f=this[0],g;if(!f)return null;if(c!==b)return this.each(function(){g=ci(this),g?g.scrollTo(a?d(g).scrollLeft():c,a?c:d(g).scrollTop()):this[e]=c});g=ci(f);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:d.support.boxModel&&g.document.documentElement[e]||g.document.body[e]:f[e]}}),d.each(["Height","Width"],function(a,c){var e=c.toLowerCase();d.fn["inner"+c]=function(){return this[0]?parseFloat(d.css(this[0],e,"padding")):null},d.fn["outer"+c]=function(a){return this[0]?parseFloat(d.css(this[0],e,a?"margin":"border")):null},d.fn[e]=function(a){var f=this[0];if(!f)return a==null?null:this;if(d.isFunction(a))return this.each(function(b){var c=d(this);c[e](a.call(this,b,c[e]()))});if(d.isWindow(f)){var g=f.document.documentElement["client"+c];return f.document.compatMode==="CSS1Compat"&&g||f.document.body["client"+c]||g}if(f.nodeType===9)return Math.max(f.documentElement["client"+c],f.body["scroll"+c],f.documentElement["scroll"+c],f.body["offset"+c],f.documentElement["offset"+c]);if(a===b){var h=d.css(f,e),i=parseFloat(h);return d.isNaN(i)?h:i}return this.css(e,typeof a==="string"?a:a+"px")}}),a.jQuery=a.$=d})(window); \ No newline at end of file diff --git a/iris-example/src/main/webapp/js/jquery-1.5.min.js b/iris-example/src/main/webapp/js/jquery-1.5.min.js deleted file mode 100644 index 9144b8a..0000000 --- a/iris-example/src/main/webapp/js/jquery-1.5.min.js +++ /dev/null @@ -1,16 +0,0 @@ -/*! - * jQuery JavaScript Library v1.5 - * 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 Jan 31 08:31:29 2011 -0500 - */ -(function(a,b){function b$(a){return d.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function bX(a){if(!bR[a]){var b=d("<"+a+">").appendTo("body"),c=b.css("display");b.remove();if(c==="none"||c==="")c="block";bR[a]=c}return bR[a]}function bW(a,b){var c={};d.each(bV.concat.apply([],bV.slice(0,b)),function(){c[this]=a});return c}function bJ(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var e=a.dataTypes,f=a.converters,g,h=e.length,i,j=e[0],k,l,m,n,o;for(g=1;g=0===c})}function N(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function F(a,b){return(a&&a!=="*"?a+".":"")+b.replace(q,"`").replace(r,"&")}function E(a){var b,c,e,f,g,h,i,j,k,l,m,n,p,q=[],r=[],s=d._data(this,u);typeof s==="function"&&(s=s.events);if(a.liveFired!==this&&s&&s.live&&!a.target.disabled&&(!a.button||a.type!=="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var t=s.live.slice(0);for(i=0;ic)break;a.currentTarget=f.elem,a.data=f.handleObj.data,a.handleObj=f.handleObj,p=f.handleObj.origHandler.apply(f.elem,arguments);if(p===!1||a.isPropagationStopped()){c=f.level,p===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function C(a,b,c){c[0].type=a;return d.event.handle.apply(b,c)}function w(){return!0}function v(){return!1}function f(a,c,f){if(f===b&&a.nodeType===1){f=a.getAttribute("data-"+c);if(typeof f==="string"){try{f=f==="true"?!0:f==="false"?!1:f==="null"?null:d.isNaN(f)?e.test(f)?d.parseJSON(f):f:parseFloat(f)}catch(g){}d.data(a,c,f)}else f=b}return f}var c=a.document,d=function(){function I(){if(!d.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(I,1);return}d.ready()}}var d=function(a,b){return new d.fn.init(a,b,g)},e=a.jQuery,f=a.$,g,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,i=/\S/,j=/^\s+/,k=/\s+$/,l=/\d/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=navigator.userAgent,w,x=!1,y,z="then done fail isResolved isRejected promise".split(" "),A,B=Object.prototype.toString,C=Object.prototype.hasOwnProperty,D=Array.prototype.push,E=Array.prototype.slice,F=String.prototype.trim,G=Array.prototype.indexOf,H={};d.fn=d.prototype={constructor:d,init:function(a,e,f){var g,i,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!e&&c.body){this.context=c,this[0]=c.body,this.selector="body",this.length=1;return this}if(typeof a==="string"){g=h.exec(a);if(!g||!g[1]&&e)return!e||e.jquery?(e||f).find(a):this.constructor(e).find(a);if(g[1]){e=e instanceof d?e[0]:e,k=e?e.ownerDocument||e:c,j=m.exec(a),j?d.isPlainObject(e)?(a=[c.createElement(j[1])],d.fn.attr.call(a,e,!0)):a=[k.createElement(j[1])]:(j=d.buildFragment([g[1]],[k]),a=(j.cacheable?d.clone(j.fragment):j.fragment).childNodes);return d.merge(this,a)}i=c.getElementById(g[2]);if(i&&i.parentNode){if(i.id!==g[2])return f.find(a);this.length=1,this[0]=i}this.context=c,this.selector=a;return this}if(d.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return d.makeArray(a,this)},selector:"",jquery:"1.5",length:0,size:function(){return this.length},toArray:function(){return E.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var e=this.constructor();d.isArray(a)?D.apply(e,a):d.merge(e,a),e.prevObject=this,e.context=this.context,b==="find"?e.selector=this.selector+(this.selector?" ":"")+c:b&&(e.selector=this.selector+"."+b+"("+c+")");return e},each:function(a,b){return d.each(this,a,b)},ready:function(a){d.bindReady(),y.done(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(E.apply(this,arguments),"slice",E.call(arguments).join(","))},map:function(a){return this.pushStack(d.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:D,sort:[].sort,splice:[].splice},d.fn.init.prototype=d.fn,d.extend=d.fn.extend=function(){var a,c,e,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!=="object"&&!d.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;y.resolveWith(c,[d]),d.fn.trigger&&d(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!x){x=!0;if(c.readyState==="complete")return setTimeout(d.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",A,!1),a.addEventListener("load",d.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",A),a.attachEvent("onload",d.ready);var b=!1;try{b=a.frameElement==null}catch(e){}c.documentElement.doScroll&&b&&I()}}},isFunction:function(a){return d.type(a)==="function"},isArray:Array.isArray||function(a){return d.type(a)==="array"},isWindow:function(a){return a&&typeof a==="object"&&"setInterval"in a},isNaN:function(a){return a==null||!l.test(a)||isNaN(a)},type:function(a){return a==null?String(a):H[B.call(a)]||"object"},isPlainObject:function(a){if(!a||d.type(a)!=="object"||a.nodeType||d.isWindow(a))return!1;if(a.constructor&&!C.call(a,"constructor")&&!C.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a){}return c===b||C.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=="string"||!b)return null;b=d.trim(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return a.JSON&&a.JSON.parse?a.JSON.parse(b):(new Function("return "+b))();d.error("Invalid JSON: "+b)},parseXML:function(b,c,e){a.DOMParser?(e=new DOMParser,c=e.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),e=c.documentElement,(!e||!e.nodeName||e.nodeName==="parsererror")&&d.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(a){if(a&&i.test(a)){var b=c.getElementsByTagName("head")[0]||c.documentElement,e=c.createElement("script");e.type="text/javascript",d.support.scriptEval()?e.appendChild(c.createTextNode(a)):e.text=a,b.insertBefore(e,b.firstChild),b.removeChild(e)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,e){var f,g=0,h=a.length,i=h===b||d.isFunction(a);if(e){if(i){for(f in a)if(c.apply(a[f],e)===!1)break}else for(;g1?(g=Array(c),d.each(b,function(a,b){d.when(b).then(function(b){g[a]=arguments.length>1?E.call(arguments,0):b,--c||e.resolveWith(f,g)},e.reject)})):e!==a&&e.resolve(a);return f},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}d.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.subclass=this.subclass,a.fn.init=function b(b,c){c&&c instanceof d&&!(c instanceof a)&&(c=a(c));return d.fn.init.call(this,b,c,e)},a.fn.init.prototype=a.fn;var e=a(c);return a},browser:{}}),y=d._Deferred(),d.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){H["[object "+b+"]"]=b.toLowerCase()}),w=d.uaMatch(v),w.browser&&(d.browser[w.browser]=!0,d.browser.version=w.version),d.browser.webkit&&(d.browser.safari=!0),G&&(d.inArray=function(a,b){return G.call(b,a)}),i.test(" ")&&(j=/^[\s\xA0]+/,k=/[\s\xA0]+$/),g=d(c),c.addEventListener?A=function(){c.removeEventListener("DOMContentLoaded",A,!1),d.ready()}:c.attachEvent&&(A=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",A),d.ready())});return a.jQuery=a.$=d}();(function(){d.support={};var b=c.createElement("div");b.style.display="none",b.innerHTML="
a";var e=b.getElementsByTagName("*"),f=b.getElementsByTagName("a")[0],g=c.createElement("select"),h=g.appendChild(c.createElement("option"));if(e&&e.length&&f){d.support={leadingWhitespace:b.firstChild.nodeType===3,tbody:!b.getElementsByTagName("tbody").length,htmlSerialize:!!b.getElementsByTagName("link").length,style:/red/.test(f.getAttribute("style")),hrefNormalized:f.getAttribute("href")==="/a",opacity:/^0.55$/.test(f.style.opacity),cssFloat:!!f.style.cssFloat,checkOn:b.getElementsByTagName("input")[0].value==="on",optSelected:h.selected,deleteExpando:!0,optDisabled:!1,checkClone:!1,_scriptEval:null,noCloneEvent:!0,boxModel:null,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableHiddenOffsets:!0},g.disabled=!0,d.support.optDisabled=!h.disabled,d.support.scriptEval=function(){if(d.support._scriptEval===null){var b=c.documentElement,e=c.createElement("script"),f="script"+d.now();e.type="text/javascript";try{e.appendChild(c.createTextNode("window."+f+"=1;"))}catch(g){}b.insertBefore(e,b.firstChild),a[f]?(d.support._scriptEval=!0,delete a[f]):d.support._scriptEval=!1,b.removeChild(e),b=e=f=null}return d.support._scriptEval};try{delete b.test}catch(i){d.support.deleteExpando=!1}b.attachEvent&&b.fireEvent&&(b.attachEvent("onclick",function j(){d.support.noCloneEvent=!1,b.detachEvent("onclick",j)}),b.cloneNode(!0).fireEvent("onclick")),b=c.createElement("div"),b.innerHTML="";var k=c.createDocumentFragment();k.appendChild(b.firstChild),d.support.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,d(function(){var a=c.createElement("div"),b=c.getElementsByTagName("body")[0];if(b){a.style.width=a.style.paddingLeft="1px",b.appendChild(a),d.boxModel=d.support.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,d.support.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",d.support.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
";var e=a.getElementsByTagName("td");d.support.reliableHiddenOffsets=e[0].offsetHeight===0,e[0].style.display="",e[1].style.display="none",d.support.reliableHiddenOffsets=d.support.reliableHiddenOffsets&&e[0].offsetHeight===0,a.innerHTML="",b.removeChild(a).style.display="none",a=e=null}});var l=function(a){var b=c.createElement("div");a="on"+a;if(!b.attachEvent)return!0;var d=a in b;d||(b.setAttribute(a,"return;"),d=typeof b[a]==="function"),b=null;return d};d.support.submitBubbles=l("submit"),d.support.changeBubbles=l("change"),b=e=f=null}})();var e=/^(?:\{.*\}|\[.*\])$/;d.extend({cache:{},uuid:0,expando:"jQuery"+(d.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?d.cache[a[d.expando]]:a[d.expando];return!!a&&!d.isEmptyObject(a)},data:function(a,c,e,f){if(d.acceptData(a)){var g=d.expando,h=typeof c==="string",i,j=a.nodeType,k=j?d.cache:a,l=j?a[d.expando]:a[d.expando]&&d.expando;if((!l||f&&l&&!k[l][g])&&h&&e===b)return;l||(j?a[d.expando]=l=++d.uuid:l=d.expando),k[l]||(k[l]={}),typeof c==="object"&&(f?k[l][g]=d.extend(k[l][g],c):k[l]=d.extend(k[l],c)),i=k[l],f&&(i[g]||(i[g]={}),i=i[g]),e!==b&&(i[c]=e);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[c]:i}},removeData:function(b,c,e){if(d.acceptData(b)){var f=d.expando,g=b.nodeType,h=g?d.cache:b,i=g?b[d.expando]:d.expando;if(!h[i])return;if(c){var j=e?h[i][f]:h[i];if(j){delete j[c];if(!d.isEmptyObject(j))return}}if(e){delete h[i][f];if(!d.isEmptyObject(h[i]))return}var k=h[i][f];d.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},h[i][f]=k):g&&(d.support.deleteExpando?delete b[d.expando]:b.removeAttribute?b.removeAttribute(d.expando):b[d.expando]=null)}},_data:function(a,b,c){return d.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=d.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),d.fn.extend({data:function(a,c){var e=null;if(typeof a==="undefined"){if(this.length){e=d.data(this[0]);if(this[0].nodeType===1){var g=this[0].attributes,h;for(var i=0,j=g.length;i-1)return!0;return!1},val:function(a){if(!arguments.length){var c=this[0];if(c){if(d.nodeName(c,"option")){var e=c.attributes.value;return!e||e.specified?c.value:c.text}if(d.nodeName(c,"select")){var f=c.selectedIndex,g=[],h=c.options,j=c.type==="select-one";if(f<0)return null;for(var k=j?f:0,l=j?f+1:h.length;k=0;else if(d.nodeName(this,"select")){var f=d.makeArray(e);d("option",this).each(function(){this.selected=d.inArray(d(this).val(),f)>=0}),f.length||(this.selectedIndex=-1)}else this.value=e}})}}),d.extend({attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,e,f){if(!a||a.nodeType===3||a.nodeType===8||a.nodeType===2)return b;if(f&&c in d.attrFn)return d(a)[c](e);var g=a.nodeType!==1||!d.isXMLDoc(a),h=e!==b;c=g&&d.props[c]||c;if(a.nodeType===1){var i=j.test(c);if(c==="selected"&&!d.support.optSelected){var n=a.parentNode;n&&(n.selectedIndex,n.parentNode&&n.parentNode.selectedIndex)}if((c in a||a[c]!==b)&&g&&!i){h&&(c==="type"&&k.test(a.nodeName)&&a.parentNode&&d.error("type property can't be changed"),e===null?a.nodeType===1&&a.removeAttribute(c):a[c]=e);if(d.nodeName(a,"form")&&a.getAttributeNode(c))return a.getAttributeNode(c).nodeValue;if(c==="tabIndex"){var o=a.getAttributeNode("tabIndex");return o&&o.specified?o.value:l.test(a.nodeName)||m.test(a.nodeName)&&a.href?0:b}return a[c]}if(!d.support.style&&g&&c==="style"){h&&(a.style.cssText=""+e);return a.style.cssText}h&&a.setAttribute(c,""+e);if(!a.attributes[c]&&(a.hasAttribute&&!a.hasAttribute(c)))return b;var p=!d.support.hrefNormalized&&g&&i?a.getAttribute(c,2):a.getAttribute(c);return p===null?b:p}h&&(a[c]=e);return a[c]}});var o=/\.(.*)$/,p=/^(?:textarea|input|select)$/i,q=/\./g,r=/ /g,s=/[^\w\s.|`]/g,t=function(a){return a.replace(s,"\\$&")},u="events";d.event={add:function(c,e,f,g){if(c.nodeType!==3&&c.nodeType!==8){d.isWindow(c)&&(c!==a&&!c.frameElement)&&(c=a);if(f===!1)f=v;else if(!f)return;var h,i;f.handler&&(h=f,f=h.handler),f.guid||(f.guid=d.guid++);var j=d._data(c);if(!j)return;var k=j[u],l=j.handle;typeof k==="function"?(l=k.handle,k=k.events):k||(c.nodeType||(j[u]=j=function(){}),j.events=k={}),l||(j.handle=l=function(){return typeof d!=="undefined"&&!d.event.triggered?d.event.handle.apply(l.elem,arguments):b}),l.elem=c,e=e.split(" ");var m,n=0,o;while(m=e[n++]){i=h?d.extend({},h):{handler:f,data:g},m.indexOf(".")>-1?(o=m.split("."),m=o.shift(),i.namespace=o.slice(0).sort().join(".")):(o=[],i.namespace=""),i.type=m,i.guid||(i.guid=f.guid);var p=k[m],q=d.event.special[m]||{};if(!p){p=k[m]=[];if(!q.setup||q.setup.call(c,g,o,l)===!1)c.addEventListener?c.addEventListener(m,l,!1):c.attachEvent&&c.attachEvent("on"+m,l)}q.add&&(q.add.call(c,i),i.handler.guid||(i.handler.guid=f.guid)),p.push(i),d.event.global[m]=!0}c=null}},global:{},remove:function(a,c,e,f){if(a.nodeType!==3&&a.nodeType!==8){e===!1&&(e=v);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=d.hasData(a)&&d._data(a),w=s&&s[u];if(!s||!w)return;typeof w==="function"&&(s=w,w=w.events),c&&c.type&&(e=c.handler,c=c.type);if(!c||typeof c==="string"&&c.charAt(0)==="."){c=c||"";for(h in w)d.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+d.map(m.slice(0).sort(),t).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=w[h];if(!p)continue;if(!e){for(j=0;j=0&&(a.type=f=f.slice(0,-1),a.exclusive=!0),e||(a.stopPropagation(),d.event.global[f]&&d.each(d.cache,function(){var b=d.expando,e=this[b];e&&e.events&&e.events[f]&&d.event.trigger(a,c,e.handle.elem)}));if(!e||e.nodeType===3||e.nodeType===8)return b;a.result=b,a.target=e,c=d.makeArray(c),c.unshift(a)}a.currentTarget=e;var h=e.nodeType?d._data(e,"handle"):(d._data(e,u)||{}).handle;h&&h.apply(e,c);var i=e.parentNode||e.ownerDocument;try{e&&e.nodeName&&d.noData[e.nodeName.toLowerCase()]||e["on"+f]&&e["on"+f].apply(e,c)===!1&&(a.result=!1,a.preventDefault())}catch(j){}if(!a.isPropagationStopped()&&i)d.event.trigger(a,c,i,!0);else if(!a.isDefaultPrevented()){var k,l=a.target,m=f.replace(o,""),n=d.nodeName(l,"a")&&m==="click",p=d.event.special[m]||{};if((!p._default||p._default.call(e,a)===!1)&&!n&&!(l&&l.nodeName&&d.noData[l.nodeName.toLowerCase()])){try{l[m]&&(k=l["on"+m],k&&(l["on"+m]=null),d.event.triggered=!0,l[m]())}catch(q){}k&&(l["on"+m]=k),d.event.triggered=!1}}},handle:function(c){var e,f,g,h,i,j=[],k=d.makeArray(arguments);c=k[0]=d.event.fix(c||a.event),c.currentTarget=this,e=c.type.indexOf(".")<0&&!c.exclusive,e||(g=c.type.split("."),c.type=g.shift(),j=g.slice(0).sort(),h=new RegExp("(^|\\.)"+j.join("\\.(?:.*\\.)?")+"(\\.|$)")),c.namespace=c.namespace||j.join("."),i=d._data(this,u),typeof i==="function"&&(i=i.events),f=(i||{})[c.type];if(i&&f){f=f.slice(0);for(var l=0,m=f.length;l-1?d.map(a.options,function(a){return a.selected}).join("-"):"":a.nodeName.toLowerCase()==="select"&&(c=a.selectedIndex);return c},B=function B(a){var c=a.target,e,f;if(p.test(c.nodeName)&&!c.readOnly){e=d._data(c,"_change_data"),f=A(c),(a.type!=="focusout"||c.type!=="radio")&&d._data(c,"_change_data",f);if(e===b||f===e)return;if(e!=null||f){a.type="change",a.liveFired=b;return d.event.trigger(a,arguments[1],c)}}};d.event.special.change={filters:{focusout:B,beforedeactivate:B,click:function(a){var b=a.target,c=b.type;if(c==="radio"||c==="checkbox"||b.nodeName.toLowerCase()==="select")return B.call(this,a)},keydown:function(a){var b=a.target,c=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")return B.call(this,a)},beforeactivate:function(a){var b=a.target;d._data(b,"_change_data",A(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in z)d.event.add(this,c+".specialChange",z[c]);return p.test(this.nodeName)},teardown:function(a){d.event.remove(this,".specialChange");return p.test(this.nodeName)}},z=d.event.special.change.filters,z.focus=z.beforeactivate}c.addEventListener&&d.each({focus:"focusin",blur:"focusout"},function(a,b){function c(a){a=d.event.fix(a),a.type=b;return d.event.handle.call(this,a)}d.event.special[b]={setup:function(){this.addEventListener(a,c,!0)},teardown:function(){this.removeEventListener(a,c,!0)}}}),d.each(["bind","one"],function(a,c){d.fn[c]=function(a,e,f){if(typeof a==="object"){for(var g in a)this[c](g,e,a[g],f);return this}if(d.isFunction(e)||e===!1)f=e,e=b;var h=c==="one"?d.proxy(f,function(a){d(this).unbind(a,h);return f.apply(this,arguments)}):f;if(a==="unload"&&c!=="one")this.one(a,e,f);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},d.attrFn&&(d.attrFn[b]=!0)}),function(){function s(a,b,c,d,e,f){for(var g=0,h=d.length;g0){k=j;break}}j=j[a]}d[g]=k}}}function r(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,g=!1,h=!0;[0,0].sort(function(){h=!1;return 0});var i=function(b,d,e,g){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!=="string")return e;var l,m,o,p,q,r,s,u,v=!0,w=i.isXML(d),x=[],y=b;do{a.exec(""),l=a.exec(y);if(l){y=l[3],x.push(l[1]);if(l[2]){p=l[3];break}}}while(l);if(x.length>1&&k.exec(b))if(x.length===2&&j.relative[x[0]])m=t(x[0]+x[1],d);else{m=j.relative[x[0]]?[d]:i(x.shift(),d);while(x.length)b=x.shift(),j.relative[b]&&(b+=x.shift()),m=t(b,m)}else{!g&&x.length>1&&d.nodeType===9&&!w&&j.match.ID.test(x[0])&&!j.match.ID.test(x[x.length-1])&&(q=i.find(x.shift(),d,w),d=q.expr?i.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:n(g)}:i.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),m=q.expr?i.filter(q.expr,q.set):q.set,x.length>0?o=n(m):v=!1;while(x.length)r=x.pop(),s=r,j.relative[r]?s=x.pop():r="",s==null&&(s=d),j.relative[r](o,s,w)}else o=x=[]}o||(o=m),o||i.error(r||b);if(f.call(o)==="[object Array]")if(v)if(d&&d.nodeType===1)for(u=0;o[u]!=null;u++)o[u]&&(o[u]===!0||o[u].nodeType===1&&i.contains(d,o[u]))&&e.push(m[u]);else for(u=0;o[u]!=null;u++)o[u]&&o[u].nodeType===1&&e.push(m[u]);else e.push.apply(e,o);else n(o,e);p&&(i(p,h,e,g),i.uniqueSort(e));return e};i.uniqueSort=function(a){if(p){g=h,a.sort(p);if(g)for(var b=1;b0},i.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=j.order.length;e":function(a,b){var c,d=typeof b==="string",e=0,f=a.length;if(d&&!/\W/.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(/\\/g,"")},TAG:function(a,b){return a[1].toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||i.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&i.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(/\\/g,"");!f&&j.attrMap[g]&&(a[1]=j.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(/\\/g,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=i(b[3],null,null,c);else{var g=i.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(j.match.POS.test(b[0])||j.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!i(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){return"text"===a.type},radio:function(a){return"radio"===a.type},checkbox:function(a){return"checkbox"===a.type},file:function(a){return"file"===a.type},password:function(a){return"password"===a.type},submit:function(a){return"submit"===a.type},image:function(a){return"image"===a.type},reset:function(a){return"reset"===a.type},button:function(a){return"button"===a.type||a.nodeName.toLowerCase()==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=j.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||i.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,k=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=j.attrHandle[c]?j.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=j.setFilters[e];if(f)return f(a,c,b,d)}}},k=j.match.POS,l=function(a,b){return"\\"+(b-0+1)};for(var m in j.match)j.match[m]=new RegExp(j.match[m].source+/(?![^\[]*\])(?![^\(]*\))/.source),j.leftMatch[m]=new RegExp(/(^(?:.|\r|\n)*?)/.source+j.match[m].source.replace(/\\(\d+)/g,l));var n=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(o){n=function(a,b){var c=0,d=b||[];if(f.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length==="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(j.find.ID=function(a,c,d){if(typeof c.getElementById!=="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},j.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(j.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!=="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(j.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=i,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){i=function(b,e,f,g){e=e||c;if(!g&&!i.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return n(e.getElementsByTagName(b),f);if(h[2]&&j.find.CLASS&&e.getElementsByClassName)return n(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return n([e.body],f);if(h&&h[3]){var k=e.getElementById(h[3]);if(!k||!k.parentNode)return n([],f);if(k.id===h[3])return n([k],f)}try{return n(e.querySelectorAll(b),f)}catch(l){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e.getAttribute("id"),o=m||d,p=e.parentNode,q=/^\s*[+~]/.test(b);m?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),q&&p&&(e=e.parentNode);try{if(!q||p)return n(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(r){}finally{m||e.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)i[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector,d=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(e){d=!0}b&&(i.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!i.isXML(a))try{if(d||!j.match.PSEUDO.test(c)&&!/!=/.test(c))return b.call(a,c)}catch(e){}return i(c,null,null,[a]).length>0})}(),function(){var a=c.createElement("div");a.innerHTML="
";if(a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;j.order.splice(1,0,"CLASS"),j.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?i.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?i.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:i.contains=function(){return!1},i.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var t=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=j.match.PSEUDO.exec(a))e+=c[0],a=a.replace(j.match.PSEUDO,"");a=j.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(var g=c;g0},closest:function(a,b){var c=[],e,f,g=this[0];if(d.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(e=0,f=a.length;e-1:d(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=L.test(a)?d(a,b||this.context):null;for(e=0,f=this.length;e-1:d.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b)break}}c=c.length>1?d.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a==="string")return d.inArray(this[0],a?d(a):this.parent().children());return d.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==="string"?d(a,b):d.makeArray(a),e=d.merge(this.get(),c);return this.pushStack(N(c[0])||N(e[0])?e:d.unique(e))},andSelf:function(){return this.add(this.prevObject)}}),d.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return d.dir(a,"parentNode")},parentsUntil:function(a,b,c){return d.dir(a,"parentNode",c)},next:function(a){return d.nth(a,2,"nextSibling")},prev:function(a){return d.nth(a,2,"previousSibling")},nextAll:function(a){return d.dir(a,"nextSibling")},prevAll:function(a){return d.dir(a,"previousSibling")},nextUntil:function(a,b,c){return d.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return d.dir(a,"previousSibling",c)},siblings:function(a){return d.sibling(a.parentNode.firstChild,a)},children:function(a){return d.sibling(a.firstChild)},contents:function(a){return d.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:d.makeArray(a.childNodes)}},function(a,b){d.fn[a]=function(c,e){var f=d.map(this,b,c),g=K.call(arguments);G.test(a)||(e=c),e&&typeof e==="string"&&(f=d.filter(e,f)),f=this.length>1&&!M[a]?d.unique(f):f,(this.length>1||I.test(e))&&H.test(a)&&(f=f.reverse());return this.pushStack(f,a,g.join(","))}}),d.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?d.find.matchesSelector(b[0],a)?[b[0]]:[]:d.find.matches(a,b)},dir:function(a,c,e){var f=[],g=a[c];while(g&&g.nodeType!==9&&(e===b||g.nodeType!==1||!d(g).is(e)))g.nodeType===1&&f.push(g),g=g[c];return f},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var P=/ jQuery\d+="(?:\d+|null)"/g,Q=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,S=/<([\w:]+)/,T=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};X.optgroup=X.option,X.tbody=X.tfoot=X.colgroup=X.caption=X.thead,X.th=X.td,d.support.htmlSerialize||(X._default=[1,"div
","
"]),d.fn.extend({text:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.text(a.call(this,b,c.text()))});if(typeof a!=="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return d.text(this)},wrapAll:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapAll(a.call(this,b))});if(this[0]){var b=d(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapInner(a.call(this,b))});return this.each(function(){var b=d(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){d(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){d.nodeName(this,"body")||d(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=d(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,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,d(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,e;(e=this[c])!=null;c++)if(!a||d.filter(a,[e]).length)!b&&e.nodeType===1&&(d.cleanData(e.getElementsByTagName("*")),d.cleanData([e])),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&d.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!0:a,b=b==null?a:b;return this.map(function(){return d.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(P,""):null;if(typeof a!=="string"||V.test(a)||!d.support.leadingWhitespace&&Q.test(a)||X[(S.exec(a)||["",""])[1].toLowerCase()])d.isFunction(a)?this.each(function(b){var c=d(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);else{a=a.replace(R,"<$1>");try{for(var c=0,e=this.length;c1&&l0?this.clone(!0):this).get();d(f[h])[b](j),e=e.concat(j)}return this.pushStack(e,a,f.selector)}}),d.extend({clone:function(a,b,c){var e=a.cloneNode(!0),f,g,h;if(!d.support.noCloneEvent&&(a.nodeType===1||a.nodeType===11)&&!d.isXMLDoc(a)){f=a.getElementsByTagName("*"),g=e.getElementsByTagName("*");for(h=0;f[h];++h)$(f[h],g[h]);$(a,e)}if(b){Z(a,e);if(c&&"getElementsByTagName"in a){f=a.getElementsByTagName("*"),g=e.getElementsByTagName("*");if(f.length)for(h=0;f[h];++h)Z(f[h],g[h])}}return e},clean:function(a,b,e,f){b=b||c,typeof b.createElement==="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var g=[];for(var h=0,i;(i=a[h])!=null;h++){typeof i==="number"&&(i+="");if(!i)continue;if(typeof i!=="string"||U.test(i)){if(typeof i==="string"){i=i.replace(R,"<$1>");var j=(S.exec(i)||["",""])[1].toLowerCase(),k=X[j]||X._default,l=k[0],m=b.createElement("div");m.innerHTML=k[1]+i+k[2];while(l--)m=m.lastChild;if(!d.support.tbody){var n=T.test(i),o=j==="table"&&!n?m.firstChild&&m.firstChild.childNodes:k[1]===""&&!n?m.childNodes:[];for(var p=o.length-1;p>=0;--p)d.nodeName(o[p],"tbody")&&!o[p].childNodes.length&&o[p].parentNode.removeChild(o[p])}!d.support.leadingWhitespace&&Q.test(i)&&m.insertBefore(b.createTextNode(Q.exec(i)[0]),m.firstChild),i=m.childNodes}}else i=b.createTextNode(i);i.nodeType?g.push(i):g=d.merge(g,i)}if(e)for(h=0;g[h];h++)!f||!d.nodeName(g[h],"script")||g[h].type&&g[h].type.toLowerCase()!=="text/javascript"?(g[h].nodeType===1&&g.splice.apply(g,[h+1,0].concat(d.makeArray(g[h].getElementsByTagName("script")))),e.appendChild(g[h])):f.push(g[h].parentNode?g[h].parentNode.removeChild(g[h]):g[h]);return g},cleanData:function(a){var b,c,e=d.cache,f=d.expando,g=d.event.special,h=d.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&d.noData[j.nodeName.toLowerCase()])continue;c=j[d.expando];if(c){b=e[c]&&e[c][f];if(b&&b.events){for(var k in b.events)g[k]?d.event.remove(j,k):d.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[d.expando]:j.removeAttribute&&j.removeAttribute(d.expando),delete e[c]}}}});var ba=/alpha\([^)]*\)/i,bb=/opacity=([^)]*)/,bc=/-([a-z])/ig,bd=/([A-Z])/g,be=/^-?\d+(?:px)?$/i,bf=/^-?\d/,bg={position:"absolute",visibility:"hidden",display:"block"},bh=["Left","Right"],bi=["Top","Bottom"],bj,bk,bl,bm=function(a,b){return b.toUpperCase()};d.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return d.access(this,a,c,!0,function(a,c,e){return e!==b?d.style(a,c,e):d.css(a,c)})},d.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bj(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0},cssProps:{"float":d.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,e,f){if(a&&a.nodeType!==3&&a.nodeType!==8&&a.style){var g,h=d.camelCase(c),i=a.style,j=d.cssHooks[h];c=d.cssProps[h]||h;if(e===b){if(j&&"get"in j&&(g=j.get(a,!1,f))!==b)return g;return i[c]}if(typeof e==="number"&&isNaN(e)||e==null)return;typeof e==="number"&&!d.cssNumber[h]&&(e+="px");if(!j||!("set"in j)||(e=j.set(a,e))!==b)try{i[c]=e}catch(k){}}},css:function(a,c,e){var f,g=d.camelCase(c),h=d.cssHooks[g];c=d.cssProps[g]||g;if(h&&"get"in h&&(f=h.get(a,!0,e))!==b)return f;if(bj)return bj(a,c,g)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){return a.replace(bc,bm)}}),d.curCSS=d.css,d.each(["height","width"],function(a,b){d.cssHooks[b]={get:function(a,c,e){var f;if(c){a.offsetWidth!==0?f=bn(a,b,e):d.swap(a,bg,function(){f=bn(a,b,e)});if(f<=0){f=bj(a,b,b),f==="0px"&&bl&&(f=bl(a,b,b));if(f!=null)return f===""||f==="auto"?"0px":f}if(f<0||f==null){f=a.style[b];return f===""||f==="auto"?"0px":f}return typeof f==="string"?f:f+"px"}},set:function(a,b){if(!be.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),d.support.opacity||(d.cssHooks.opacity={get:function(a,b){return bb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style;c.zoom=1;var e=d.isNaN(b)?"":"alpha(opacity="+b*100+")",f=c.filter||"";c.filter=ba.test(f)?f.replace(ba,e):c.filter+" "+e}}),c.defaultView&&c.defaultView.getComputedStyle&&(bk=function(a,c,e){var f,g,h;e=e.replace(bd,"-$1").toLowerCase();if(!(g=a.ownerDocument.defaultView))return b;if(h=g.getComputedStyle(a,null))f=h.getPropertyValue(e),f===""&&!d.contains(a.ownerDocument.documentElement,a)&&(f=d.style(a,e));return f}),c.documentElement.currentStyle&&(bl=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!be.test(d)&&bf.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bj=bk||bl,d.expr&&d.expr.filters&&(d.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!d.support.reliableHiddenOffsets&&(a.style.display||d.css(a,"display"))==="none"},d.expr.filters.visible=function(a){return!d.expr.filters.hidden(a)});var bo=/%20/g,bp=/\[\]$/,bq=/\r?\n/g,br=/#.*$/,bs=/^(.*?):\s*(.*?)\r?$/mg,bt=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bu=/^(?:GET|HEAD)$/,bv=/^\/\//,bw=/\?/,bx=/)<[^<]*)*<\/script>/gi,by=/^(?:select|textarea)/i,bz=/\s+/,bA=/([?&])_=[^&]*/,bB=/^(\w+:)\/\/([^\/?#:]+)(?::(\d+))?/,bC=d.fn.load,bD={},bE={};d.fn.extend({load:function(a,b,c){if(typeof a!=="string"&&bC)return bC.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}var g="GET";b&&(d.isFunction(b)?(c=b,b=null):typeof b==="object"&&(b=d.param(b,d.ajaxSettings.traditional),g="POST"));var h=this;d.ajax({url:a,type:g,dataType:"html",data:b,complete:function(a,b,e){e=a.responseText,a.isResolved()&&(a.done(function(a){e=a}),h.html(f?d("
").append(e.replace(bx,"")).find(f):e)),c&&h.each(c,[e,b,a])}});return this},serialize:function(){return d.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?d.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||by.test(this.nodeName)||bt.test(this.type))}).map(function(a,b){var c=d(this).val();return c==null?null:d.isArray(c)?d.map(c,function(a,c){return{name:b.name,value:a.replace(bq,"\r\n")}}):{name:b.name,value:c.replace(bq,"\r\n")}}).get()}}),d.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){d.fn[b]=function(a){return this.bind(b,a)}}),d.each(["get","post"],function(a,b){d[b]=function(a,c,e,f){d.isFunction(c)&&(f=f||e,e=c,c=null);return d.ajax({type:b,url:a,data:c,success:e,dataType:f})}}),d.extend({getScript:function(a,b){return d.get(a,null,b,"script")},getJSON:function(a,b,c){return d.get(a,b,c,"json")},ajaxSetup:function(a){d.extend(!0,d.ajaxSettings,a),a.context&&(d.ajaxSettings.context=a.context)},ajaxSettings:{url:location.href,global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":d.parseJSON,"text xml":d.parseXML}},ajaxPrefilter:bF(bD),ajaxTransport:bF(bE),ajax:function(a,e){function w(a,c,e,l){if(t!==2){t=2,p&&clearTimeout(p),o=b,m=l||"",v.readyState=a?4:0;var n,q,r,s=e?bI(f,v,e):b,u,w;if(a>=200&&a<300||a===304){if(f.ifModified){if(u=v.getResponseHeader("Last-Modified"))d.lastModified[f.url]=u;if(w=v.getResponseHeader("Etag"))d.etag[f.url]=w}if(a===304)c="notmodified",n=!0;else try{q=bJ(f,s),c="success",n=!0}catch(x){c="parsererror",r=x}}else r=c,a&&(c="error",a<0&&(a=0));v.status=a,v.statusText=c,n?i.resolveWith(g,[q,c,v]):i.rejectWith(g,[v,c,r]),v.statusCode(k),k=b,f.global&&h.trigger("ajax"+(n?"Success":"Error"),[v,f,n?q:r]),j.resolveWith(g,[v,c]),f.global&&(h.trigger("ajaxComplete",[v,f]),--d.active||d.event.trigger("ajaxStop"))}}typeof e!=="object"&&(e=a,a=b),e=e||{};var f=d.extend(!0,{},d.ajaxSettings,e),g=(f.context=("context"in e?e:d.ajaxSettings).context)||f,h=g===f?d.event:d(g),i=d.Deferred(),j=d._Deferred(),k=f.statusCode||{},l={},m,n,o,p,q=c.location,r=q.protocol||"http:",s,t=0,u,v={readyState:0,setRequestHeader:function(a,b){t===0&&(l[a.toLowerCase()]=b);return this},getAllResponseHeaders:function(){return t===2?m:null},getResponseHeader:function(a){var b;if(t===2){if(!n){n={};while(b=bs.exec(m))n[b[1].toLowerCase()]=b[2]}b=n[a.toLowerCase()]}return b||null},abort:function(a){a=a||"abort",o&&o.abort(a),w(0,a);return this}};i.promise(v),v.success=v.done,v.error=v.fail,v.complete=j.done,v.statusCode=function(a){if(a){var b;if(t<2)for(b in a)k[b]=[k[b],a[b]];else b=a[v.status],v.then(b,b)}return this},f.url=(""+(a||f.url)).replace(br,"").replace(bv,r+"//"),f.dataTypes=d.trim(f.dataType||"*").toLowerCase().split(bz),f.crossDomain||(s=bB.exec(f.url.toLowerCase()),f.crossDomain=s&&(s[1]!=r||s[2]!=q.hostname||(s[3]||(s[1]==="http:"?80:443))!=(q.port||(r==="http:"?80:443)))),f.data&&f.processData&&typeof f.data!=="string"&&(f.data=d.param(f.data,f.traditional)),bG(bD,f,e,v),f.type=f.type.toUpperCase(),f.hasContent=!bu.test(f.type),f.global&&d.active++===0&&d.event.trigger("ajaxStart");if(!f.hasContent){f.data&&(f.url+=(bw.test(f.url)?"&":"?")+f.data);if(f.cache===!1){var x=d.now(),y=f.url.replace(bA,"$1_="+x);f.url=y+(y===f.url?(bw.test(f.url)?"&":"?")+"_="+x:"")}}if(f.data&&f.hasContent&&f.contentType!==!1||e.contentType)l["content-type"]=f.contentType;f.ifModified&&(d.lastModified[f.url]&&(l["if-modified-since"]=d.lastModified[f.url]),d.etag[f.url]&&(l["if-none-match"]=d.etag[f.url])),l.accept=f.dataTypes[0]&&f.accepts[f.dataTypes[0]]?f.accepts[f.dataTypes[0]]+(f.dataTypes[0]!=="*"?", */*; q=0.01":""):f.accepts["*"];for(u in f.headers)l[u.toLowerCase()]=f.headers[u];if(!f.beforeSend||f.beforeSend.call(g,v,f)!==!1&&t!==2){for(u in {success:1,error:1,complete:1})v[u](f[u]);o=bG(bE,f,e,v);if(o){t=v.readyState=1,f.global&&h.trigger("ajaxSend",[v,f]),f.async&&f.timeout>0&&(p=setTimeout(function(){v.abort("timeout")},f.timeout));try{o.send(l,w)}catch(z){status<2?w(-1,z):d.error(z)}}else w(-1,"No Transport")}else w(0,"abort"),v=!1;return v},param:function(a,c){var e=[],f=function(a,b){b=d.isFunction(b)?b():b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=d.ajaxSettings.traditional);if(d.isArray(a)||a.jquery)d.each(a,function(){f(this.name,this.value)});else for(var g in a)bH(g,a[g],c,f);return e.join("&").replace(bo,"+")}}),d.extend({active:0,lastModified:{},etag:{}});var bK=d.now(),bL=/(\=)\?(&|$)|()\?\?()/i;d.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return d.expando+"_"+bK++}}),d.ajaxPrefilter("json jsonp",function(b,c,e){e=typeof b.data==="string";if(b.dataTypes[0]==="jsonp"||c.jsonpCallback||c.jsonp!=null||b.jsonp!==!1&&(bL.test(b.url)||e&&bL.test(b.data))){var f,g=b.jsonpCallback=d.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h=a[g],i=b.url,j=b.data,k="$1"+g+"$2";b.jsonp!==!1&&(i=i.replace(bL,k),b.url===i&&(e&&(j=j.replace(bL,k)),b.data===j&&(i+=(/\?/.test(i)?"&":"?")+b.jsonp+"="+g))),b.url=i,b.data=j,a[g]=function(a){f=[a]},b.complete=[function(){a[g]=h;if(h)f&&d.isFunction(h)&&a[g](f[0]);else try{delete a[g]}catch(b){}},b.complete],b.converters["script json"]=function(){f||d.error(g+" was not called");return f[0]},b.dataTypes[0]="json";return"script"}}),d.ajaxSetup({accepts:{script:"text/javascript, application/javascript"},contents:{script:/javascript/},converters:{"text script":function(a){d.globalEval(a);return a}}}),d.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),d.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var bM=d.now(),bN={},bO,bP;d.ajaxSettings.xhr=a.ActiveXObject?function(){if(a.location.protocol!=="file:")try{return new a.XMLHttpRequest}catch(b){}try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(c){}}:function(){return new a.XMLHttpRequest};try{bP=d.ajaxSettings.xhr()}catch(bQ){}d.support.ajax=!!bP,d.support.cors=bP&&"withCredentials"in bP,bP=b,d.support.ajax&&d.ajaxTransport(function(b){if(!b.crossDomain||d.support.cors){var c;return{send:function(e,f){bO||(bO=1,d(a).bind("unload",function(){d.each(bN,function(a,b){b.onreadystatechange&&b.onreadystatechange(1)})}));var g=b.xhr(),h;b.username?g.open(b.type,b.url,b.async,b.username,b.password):g.open(b.type,b.url,b.async),(!b.crossDomain||b.hasContent)&&!e["x-requested-with"]&&(e["x-requested-with"]="XMLHttpRequest");try{d.each(e,function(a,b){g.setRequestHeader(a,b)})}catch(i){}g.send(b.hasContent&&b.data||null),c=function(a,e){if(c&&(e||g.readyState===4)){c=0,h&&(g.onreadystatechange=d.noop,delete bN[h]);if(e)g.readyState!==4&&g.abort();else{var i=g.status,j,k=g.getAllResponseHeaders(),l={},m=g.responseXML;m&&m.documentElement&&(l.xml=m),l.text=g.responseText;try{j=g.statusText}catch(n){j=""}i=i===0?!b.crossDomain||j?k?304:0:302:i==1223?204:i,f(i,j,l,k)}}},b.async&&g.readyState!==4?(h=bM++,bN[h]=g,g.onreadystatechange=c):c()},abort:function(){c&&c(0,1)}}}});var bR={},bS=/^(?:toggle|show|hide)$/,bT=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,bU,bV=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];d.fn.extend({show:function(a,b,c){var e,f;if(a||a===0)return this.animate(bW("show",3),a,b,c);for(var g=0,h=this.length;g=0;a--)c[a].elem===this&&(b&&c[a](!0),c.splice(a,1))}),b||this.dequeue();return this}}),d.each({slideDown:bW("show",1),slideUp:bW("hide",1),slideToggle:bW("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){d.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),d.extend({speed:function(a,b,c){var e=a&&typeof a==="object"?d.extend({},a):{complete:c||!c&&b||d.isFunction(a)&&a,duration:a,easing:c&&b||b&&!d.isFunction(b)&&b};e.duration=d.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in d.fx.speeds?d.fx.speeds[e.duration]:d.fx.speeds._default,e.old=e.complete,e.complete=function(){e.queue!==!1&&d(this).dequeue(),d.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig||(b.orig={})}}),d.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(d.fx.step[this.prop]||d.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(d.css(this.elem,this.prop));return a||0},custom:function(a,b,c){function g(a){return e.step(a)}var e=this,f=d.fx;this.startTime=d.now(),this.start=a,this.end=b,this.unit=c||this.unit||"px",this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&d.timers.push(g)&&!bU&&(bU=setInterval(f.tick,f.interval))},show:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),d(this.elem).show()},hide:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=d.now(),c=!0;if(a||b>=this.options.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),this.options.curAnim[this.prop]=!0;for(var e in this.options.curAnim)this.options.curAnim[e]!==!0&&(c=!1);if(c){if(this.options.overflow!=null&&!d.support.shrinkWrapBlocks){var f=this.elem,g=this.options;d.each(["","X","Y"],function(a,b){f.style["overflow"+b]=g.overflow[a]})}this.options.hide&&d(this.elem).hide();if(this.options.hide||this.options.show)for(var h in this.options.curAnim)d.style(this.elem,h,this.options.orig[h]);this.options.complete.call(this.elem)}return!1}var i=b-this.startTime;this.state=i/this.options.duration;var j=this.options.specialEasing&&this.options.specialEasing[this.prop],k=this.options.easing||(d.easing.swing?"swing":"linear");this.pos=d.easing[j||k](this.state,i,0,1,this.options.duration),this.now=this.start+(this.end-this.start)*this.pos,this.update();return!0}},d.extend(d.fx,{tick:function(){var a=d.timers;for(var b=0;b
";d.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),e=b.firstChild,f=e.firstChild,h=e.nextSibling.firstChild.firstChild,this.doesNotAddBorder=f.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,f.style.position="fixed",f.style.top="20px",this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15,f.style.position=f.style.top="",e.style.overflow="hidden",e.style.position="relative",this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),a=b=e=f=g=h=null,d.offset.initialize=d.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;d.offset.initialize(),d.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(d.css(a,"marginTop"))||0,c+=parseFloat(d.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var e=d.css(a,"position");e==="static"&&(a.style.position="relative");var f=d(a),g=f.offset(),h=d.css(a,"top"),i=d.css(a,"left"),j=e==="absolute"&&d.inArray("auto",[h,i])>-1,k={},l={},m,n;j&&(l=f.position()),m=j?l.top:parseInt(h,10)||0,n=j?l.left:parseInt(i,10)||0,d.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):f.css(k)}},d.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),e=bZ.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(d.css(a,"marginTop"))||0,c.left-=parseFloat(d.css(a,"marginLeft"))||0,e.top+=parseFloat(d.css(b[0],"borderTopWidth"))||0,e.left+=parseFloat(d.css(b[0],"borderLeftWidth"))||0;return{top:c.top-e.top,left:c.left-e.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&(!bZ.test(a.nodeName)&&d.css(a,"position")==="static"))a=a.offsetParent;return a})}}),d.each(["Left","Top"],function(a,c){var e="scroll"+c;d.fn[e]=function(c){var f=this[0],g;if(!f)return null;if(c!==b)return this.each(function(){g=b$(this),g?g.scrollTo(a?d(g).scrollLeft():c,a?c:d(g).scrollTop()):this[e]=c});g=b$(f);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:d.support.boxModel&&g.document.documentElement[e]||g.document.body[e]:f[e]}}),d.each(["Height","Width"],function(a,c){var e=c.toLowerCase();d.fn["inner"+c]=function(){return this[0]?parseFloat(d.css(this[0],e,"padding")):null},d.fn["outer"+c]=function(a){return this[0]?parseFloat(d.css(this[0],e,a?"margin":"border")):null},d.fn[e]=function(a){var f=this[0];if(!f)return a==null?null:this;if(d.isFunction(a))return this.each(function(b){var c=d(this);c[e](a.call(this,b,c[e]()))});if(d.isWindow(f)){var g=f.document.documentElement["client"+c];return f.document.compatMode==="CSS1Compat"&&g||f.document.body["client"+c]||g}if(f.nodeType===9)return Math.max(f.documentElement["client"+c],f.body["scroll"+c],f.documentElement["scroll"+c],f.body["offset"+c],f.documentElement["offset"+c]);if(a===b){var h=d.css(f,e),i=parseFloat(h);return d.isNaN(i)?h:i}return this.css(e,typeof a==="string"?a:a+"px")}})})(window); diff --git a/iris-example/src/main/webapp/js/jquery-1.6.1.min.js b/iris-example/src/main/webapp/js/jquery-1.6.1.min.js deleted file mode 100644 index b2ac174..0000000 --- a/iris-example/src/main/webapp/js/jquery-1.6.1.min.js +++ /dev/null @@ -1,18 +0,0 @@ -/*! - * jQuery JavaScript Library v1.6.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: Thu May 12 15:04:36 2011 -0400 - */ -(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!cj[a]){var b=f("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d===""){ck||(ck=c.createElement("iframe"),ck.frameBorder=ck.width=ck.height=0),c.body.appendChild(ck);if(!cl||!ck.createElement)cl=(ck.contentWindow||ck.contentDocument).document,cl.write("");b=cl.createElement(a),cl.body.appendChild(b),d=f.css(b,"display"),c.body.removeChild(ck)}cj[a]=d}return cj[a]}function cu(a,b){var c={};f.each(cp.concat.apply([],cp.slice(0,b)),function(){c[this]=a});return c}function ct(){cq=b}function cs(){setTimeout(ct,0);return cq=f.now()}function ci(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ch(){try{return new a.XMLHttpRequest}catch(b){}}function cb(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g=0===c})}function W(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function O(a,b){return(a&&a!=="*"?a+".":"")+b.replace(A,"`").replace(B,"&")}function N(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function L(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function F(){return!0}function E(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function H(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(H,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=d.userAgent,x,y,z,A=Object.prototype.toString,B=Object.prototype.hasOwnProperty,C=Array.prototype.push,D=Array.prototype.slice,E=String.prototype.trim,F=Array.prototype.indexOf,G={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.1",length:0,size:function(){return this.length},toArray:function(){return D.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?C.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),y.done(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(D.apply(this,arguments),"slice",D.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:C,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;y.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!y){y=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",z,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",z),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&H()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):G[A.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!B.call(a,"constructor")&&!B.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||B.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};f=c.createElement("select"),g=f.appendChild(c.createElement("option")),h=a.getElementsByTagName("input")[0],j={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},h.checked=!0,j.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,j.optDisabled=!g.disabled;try{delete a.test}catch(s){j.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function b(){j.noCloneEvent=!1,a.detachEvent("onclick",b)}),a.cloneNode(!0).fireEvent("onclick")),h=c.createElement("input"),h.value="t",h.setAttribute("type","radio"),j.radioValue=h.value==="t",h.setAttribute("checked","checked"),a.appendChild(h),k=c.createDocumentFragment(),k.appendChild(a.firstChild),j.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",l=c.createElement("body"),m={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"};for(q in m)l.style[q]=m[q];l.appendChild(a),b.insertBefore(l,b.firstChild),j.appendChecked=h.checked,j.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,j.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",j.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
",n=a.getElementsByTagName("td"),r=n[0].offsetHeight===0,n[0].style.display="",n[1].style.display="none",j.reliableHiddenOffsets=r&&n[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(i=c.createElement("div"),i.style.width="0",i.style.marginRight="0",a.appendChild(i),j.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(i,null)||{marginRight:0}).marginRight,10)||0)===0),l.innerHTML="",b.removeChild(l);if(a.attachEvent)for(q in{submit:1,change:1,focusin:1})p="on"+q,r=p in a,r||(a.setAttribute(p,"return;"),r=typeof a[p]=="function"),j[q+"Bubbles"]=r;return j}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;return(e.value||"").replace(p,"")}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);c=j&&f.attrFix[c]||c,i=f.attrHooks[c],i||(!t.test(c)||typeof d!="boolean"&&d!==b&&d.toLowerCase()!==c.toLowerCase()?v&&(f.nodeName(a,"form")||u.test(c))&&(i=v):i=w);if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j)return i.get(a,c);h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}},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(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);c=i&&f.propFix[c]||c,h=f.propHooks[c];return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return a[f.propFix[c]||c]?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=b),a.setAttribute(c,c.toLowerCase()));return c}},f.attrHooks.value={get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return a.value},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=Object.prototype.hasOwnProperty,y=/\.(.*)$/,z=/^(?:textarea|input|select)$/i,A=/\./g,B=/ /g,C=/[^\w\s.|`]/g,D=function(a){return a.replace(C,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=E;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=E);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),D).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem -)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},K=function(c){var d=c.target,e,g;if(!!z.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=J(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:K,beforedeactivate:K,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&K.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&K.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",J(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in I)f.event.add(this,c+".specialChange",I[c]);return z.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return z.test(this.nodeName)}},I=f.event.special.change.filters,I.focus=I.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=U.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(W(c[0])||W(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=T.call(arguments);P.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!V[a]?f.unique(e):e,(this.length>1||R.test(d))&&Q.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var Y=/ jQuery\d+="(?:\d+|null)"/g,Z=/^\s+/,$=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,_=/<([\w:]+)/,ba=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(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,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Y,""):null;if(typeof a=="string"&&!bc.test(a)&&(f.support.leadingWhitespace||!Z.test(a))&&!bg[(_.exec(a)||["",""])[1].toLowerCase()]){a=a.replace($,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bj(a,d),e=bk(a),g=bk(d);for(h=0;e[h];++h)bj(e[h],g[h])}if(b){bi(a,d);if(c){e=bk(a),g=bk(d);for(h=0;e[h];++h)bi(e[h],g[h])}}return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument|| -b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!bb.test(k))k=b.createTextNode(k);else{k=k.replace($,"<$1>");var l=(_.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=ba.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Z.test(k)&&o.insertBefore(b.createTextNode(Z.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bp.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bo.test(g)?g.replace(bo,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,c){var d,e,g;c=c.replace(br,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bs.test(d)&&bt.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bE=/%20/g,bF=/\[\]$/,bG=/\r?\n/g,bH=/#.*$/,bI=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bJ=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bK=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bL=/^(?:GET|HEAD)$/,bM=/^\/\//,bN=/\?/,bO=/)<[^<]*)*<\/script>/gi,bP=/^(?:select|textarea)/i,bQ=/\s+/,bR=/([?&])_=[^&]*/,bS=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bT=f.fn.load,bU={},bV={},bW,bX;try{bW=e.href}catch(bY){bW=c.createElement("a"),bW.href="",bW=bW.href}bX=bS.exec(bW.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bT)return bT.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bO,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bP.test(this.nodeName)||bJ.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bG,"\r\n")}}):{name:b.name,value:c.replace(bG,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bW,isLocal:bK.test(bX[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bZ(bU),ajaxTransport:bZ(bV),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?ca(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=cb(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bI.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bH,"").replace(bM,bX[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bQ),d.crossDomain==null&&(r=bS.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bX[1]&&r[2]==bX[2]&&(r[3]||(r[1]==="http:"?80:443))==(bX[3]||(bX[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bU,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bL.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bN.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bR,"$1_="+x);d.url=y+(y===d.url?(bN.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bV,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)b_(g,a[g],c,e);return d.join("&").replace(bE,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cc=f.now(),cd=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cc++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cd.test(b.url)||e&&cd.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cd,l),b.url===j&&(e&&(k=k.replace(cd,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ce=a.ActiveXObject?function(){for(var a in cg)cg[a](0,1)}:!1,cf=0,cg;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ch()||ci()}:ch,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ce&&delete cg[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cf,ce&&(cg||(cg={},f(a).unload(ce)),cg[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cj={},ck,cl,cm=/^(?:toggle|show|hide)$/,cn=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,co,cp=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cq,cr=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b
";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){return this[0]?parseFloat(f.css(this[0],d,"padding")):null},f.fn["outer"+c]=function(a){return this[0]?parseFloat(f.css(this[0],d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/iris-example/src/main/webapp/js/jquery-1.6.2.min.js b/iris-example/src/main/webapp/js/jquery-1.6.2.min.js deleted file mode 100644 index 48590ec..0000000 --- a/iris-example/src/main/webapp/js/jquery-1.6.2.min.js +++ /dev/null @@ -1,18 +0,0 @@ -/*! - * jQuery JavaScript Library v1.6.2 - * 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: Thu Jun 30 14:16:56 2011 -0400 - */ -(function(a,b){function cv(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cs(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"":"")+""),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cr(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cq(){cn=b}function cp(){setTimeout(cq,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bx(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bm(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(be,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bl(a){f.nodeName(a,"input")?bk(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bk)}function bk(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bj(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bi(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bh(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z])/ig,x=function(a,b){return b.toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.2",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.done(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(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!A){A=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||D.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0},m&&f.extend(p,{position:"absolute",left:-1e3,top:-1e3});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[f.camelCase(c)]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[f.camelCase(c)]||i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=w:v&&c!=="className"&&(f.nodeName(a,"form")||u.test(c))&&(i=v)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}},value:{get:function(a,b){if(v&&f.nodeName(a,"button"))return v.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(v&&f.nodeName(a,"button"))return v.set(a,b,c);a.value=b}}},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(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),w={get:function(a,c){return f.prop(a,c)?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(f.attrFix=f.propFix,v=f.attrHooks.name=f.attrHooks.title=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i. -shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function(c){var d=c.target,e,g;if(!!y.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=I(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};bf.optgroup=bf.option,bf.tbody=bf.tfoot=bf.colgroup=bf.caption=bf.thead,bf.th=bf.td,f.support.htmlSerialize||(bf._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(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,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!bf[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j -)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bi(a,d),e=bj(a),g=bj(d);for(h=0;e[h];++h)bi(e[h],g[h])}if(b){bh(a,d);if(c){e=bj(a),g=bj(d);for(h=0;e[h];++h)bh(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!ba.test(k))k=b.createTextNode(k);else{k=k.replace(Z,"<$1>");var l=($.exec(k)||["",""])[1].toLowerCase(),m=bf[l]||bf._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=_.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&Y.test(k)&&o.insertBefore(b.createTextNode(Y.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bo.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bn.test(g)?g.replace(bn,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bB=/%20/g,bC=/\[\]$/,bD=/\r?\n/g,bE=/#.*$/,bF=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bG=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bH=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bI=/^(?:GET|HEAD)$/,bJ=/^\/\//,bK=/\?/,bL=/)<[^<]*)*<\/script>/gi,bM=/^(?:select|textarea)/i,bN=/\s+/,bO=/([?&])_=[^&]*/,bP=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bQ=f.fn.load,bR={},bS={},bT,bU;try{bT=e.href}catch(bV){bT=c.createElement("a"),bT.href="",bT=bT.href}bU=bP.exec(bT.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bQ)return bQ.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bL,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bM.test(this.nodeName)||bG.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bD,"\r\n")}}):{name:b.name,value:c.replace(bD,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bT,isLocal:bH.test(bU[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bW(bR),ajaxTransport:bW(bS),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?bZ(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=b$(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bF.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bE,"").replace(bJ,bU[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bN),d.crossDomain==null&&(r=bP.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bU[1]&&r[2]==bU[2]&&(r[3]||(r[1]==="http:"?80:443))==(bU[3]||(bU[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bX(bR,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bI.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bK.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bO,"$1_="+x);d.url=y+(y===d.url?(bK.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bX(bS,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bB,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn,co=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cr("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b
";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cu.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cu.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cv(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cv(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/iris-example/src/main/webapp/js/jquery-1.6.3.min.js b/iris-example/src/main/webapp/js/jquery-1.6.3.min.js deleted file mode 100644 index 20d7f61..0000000 --- a/iris-example/src/main/webapp/js/jquery-1.6.3.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.6.3 http://jquery.com/ | http://jquery.org/license */ -(function(a,b){function cu(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cr(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"":"")+""),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cq(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cp(){cn=b}function co(){setTimeout(cp,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bv(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bl(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bd,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bk(a){f.nodeName(a,"input")?bj(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bj)}function bj(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bi(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bh(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bg(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i=0===c})}function U(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function M(a,b){return(a&&a!=="*"?a+".":"")+b.replace(y,"`").replace(z,"&")}function L(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function J(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function D(){return!0}function C(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.3",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.done(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(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;B.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-1000px",top:"-1000px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i=f.expando,j=typeof c=="string",k=a.nodeType,l=k?f.cache:a,m=k?a[f.expando]:a[f.expando]&&f.expando;if((!m||e&&m&&l[m]&&!l[m][i])&&j&&d===b)return;m||(k?a[f.expando]=m=++f.uuid:m=f.expando),l[m]||(l[m]={},k||(l[m].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?l[m][i]=f.extend(l[m][i],c):l[m]=f.extend(l[m],c);g=l[m],e&&(g[i]||(g[i]={}),g=g[i]),d!==b&&(g[f.camelCase(c)]=d);if(c==="events"&&!g[c])return g[i]&&g[i].events;j?(h=g[c],h==null&&(h=g[f.camelCase(c)])):h=g;return h}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e=f.expando,g=a.nodeType,h=g?f.cache:a,i=g?a[f.expando]:f.expando;if(!h[i])return;if(b){d=c?h[i][e]:h[i];if(d){d[b]||(b=f.camelCase(b)),delete d[b];if(!l(d))return}}if(c){delete h[i][e];if(!l(h[i]))return}var j=h[i][e];f.support.deleteExpando||!h.setInterval?delete h[i]:h[i]=null,j?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=j):g&&(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=v:u&&(i=u)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.attr(a,b,""),a.removeAttribute(b),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(u&&f.nodeName(a,"button"))return u.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(u&&f.nodeName(a,"button"))return u.set(a,b,c);a.value=b}}},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(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==null?g:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabIndex=f.propHooks.tabIndex,v={get:function(a,c){var d;return f.prop(a,c)===!0||(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(u=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var w=/\.(.*)$/,x=/^(?:textarea|input|select)$/i,y=/\./g,z=/ /g,A=/[^\w\s.|`]/g,B=function(a){return a.replace(A,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=C;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=C);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),B).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},I=function(c){var d=c.target,e,g;if(!!x.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=H(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:I,beforedeactivate:I,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&I.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&I.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",H(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in G)f.event.add(this,c+".specialChange",G[c]);return x.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return x.test(this.nodeName)}},G=f.event.special.change.filters,G.focus=G.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=S.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(U(c[0])||U(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=R.call(arguments);N.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!T[a]?f.unique(e):e,(this.length>1||P.test(d))&&O.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(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,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!be[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bh(a,d),e=bi(a),g=bi(d);for(h=0;e[h];++h)g[h]&&bh(e[h],g[h])}if(b){bg(a,d);if(c){e=bi(a),g=bi(d);for(h=0;e[h];++h)bg(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=be[l]||be._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bn.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bm,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bm.test(g)?g.replace(bm,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bv(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bw=function(a,c){var d,e,g;c=c.replace(bo,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bx=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bp.test(d)&&bq.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bv=bw||bx,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bz=/%20/g,bA=/\[\]$/,bB=/\r?\n/g,bC=/#.*$/,bD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bE=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bF=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bG=/^(?:GET|HEAD)$/,bH=/^\/\//,bI=/\?/,bJ=/)<[^<]*)*<\/script>/gi,bK=/^(?:select|textarea)/i,bL=/\s+/,bM=/([?&])_=[^&]*/,bN=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bO=f.fn.load,bP={},bQ={},bR,bS,bT=["*/"]+["*"];try{bR=e.href}catch(bU){bR=c.createElement("a"),bR.href="",bR=bR.href}bS=bN.exec(bR.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bO)return bO.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bJ,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bK.test(this.nodeName)||bE.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bB,"\r\n")}}):{name:b.name,value:c.replace(bB,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?bX(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),bX(a,b);return a},ajaxSettings:{url:bR,isLocal:bF.test(bS[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bT},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bV(bP),ajaxTransport:bV(bQ),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?bZ(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=b$(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bD.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bC,"").replace(bH,bS[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bL),d.crossDomain==null&&(r=bN.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bS[1]&&r[2]==bS[2]&&(r[3]||(r[1]==="http:"?80:443))==(bS[3]||(bS[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bW(bP,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bG.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bI.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bM,"$1_="+x);d.url=y+(y===d.url?(bI.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bT+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bW(bQ,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bz,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cq("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b
";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=ct.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!ct.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cu(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cu(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNaN(j)?i:j}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/iris-example/src/main/webapp/js/jquery-1.6.4.min.js b/iris-example/src/main/webapp/js/jquery-1.6.4.min.js deleted file mode 100644 index 628ed9b..0000000 --- a/iris-example/src/main/webapp/js/jquery-1.6.4.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.6.4 http://jquery.com/ | http://jquery.org/license */ -(function(a,b){function cu(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cr(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"":"")+""),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cq(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cp(){cn=b}function co(){setTimeout(cp,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bv(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bl(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bd,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bk(a){f.nodeName(a,"input")?bj(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bj)}function bj(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bi(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bh(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bg(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i=0===c})}function U(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function M(a,b){return(a&&a!=="*"?a+".":"")+b.replace(y,"`").replace(z,"&")}function L(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function J(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function D(){return!0}function C(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.4",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.done(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(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;B.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-1000px",top:"-1000px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i=f.expando,j=typeof c=="string",k=a.nodeType,l=k?f.cache:a,m=k?a[f.expando]:a[f.expando]&&f.expando;if((!m||e&&m&&l[m]&&!l[m][i])&&j&&d===b)return;m||(k?a[f.expando]=m=++f.uuid:m=f.expando),l[m]||(l[m]={},k||(l[m].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?l[m][i]=f.extend(l[m][i],c):l[m]=f.extend(l[m],c);g=l[m],e&&(g[i]||(g[i]={}),g=g[i]),d!==b&&(g[f.camelCase(c)]=d);if(c==="events"&&!g[c])return g[i]&&g[i].events;j?(h=g[c],h==null&&(h=g[f.camelCase(c)])):h=g;return h}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e=f.expando,g=a.nodeType,h=g?f.cache:a,i=g?a[f.expando]:f.expando;if(!h[i])return;if(b){d=c?h[i][e]:h[i];if(d){d[b]||(b=f.camelCase(b)),delete d[b];if(!l(d))return}}if(c){delete h[i][e];if(!l(h[i]))return}var j=h[i][e];f.support.deleteExpando||!h.setInterval?delete h[i]:h[i]=null,j?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=j):g&&(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=v:u&&(i=u)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.attr(a,b,""),a.removeAttribute(b),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(u&&f.nodeName(a,"button"))return u.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(u&&f.nodeName(a,"button"))return u.set(a,b,c);a.value=b}}},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(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==null?g:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabIndex=f.propHooks.tabIndex,v={get:function(a,c){var d;return f.prop(a,c)===!0||(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(u=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var w=/\.(.*)$/,x=/^(?:textarea|input|select)$/i,y=/\./g,z=/ /g,A=/[^\w\s.|`]/g,B=function(a){return a.replace(A,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=C;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=C);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),B).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},I=function(c){var d=c.target,e,g;if(!!x.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=H(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:I,beforedeactivate:I,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&I.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&I.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",H(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in G)f.event.add(this,c+".specialChange",G[c]);return x.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return x.test(this.nodeName)}},G=f.event.special.change.filters,G.focus=G.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=S.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(U(c[0])||U(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=R.call(arguments);N.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!T[a]?f.unique(e):e,(this.length>1||P.test(d))&&O.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(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,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!be[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bh(a,d),e=bi(a),g=bi(d);for(h=0;e[h];++h)g[h]&&bh(e[h],g[h])}if(b){bg(a,d);if(c){e=bi(a),g=bi(d);for(h=0;e[h];++h)bg(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=be[l]||be._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bn.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bm,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bm.test(g)?g.replace(bm,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bv(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bw=function(a,c){var d,e,g;c=c.replace(bo,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bx=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bp.test(d)&&bq.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bv=bw||bx,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bz=/%20/g,bA=/\[\]$/,bB=/\r?\n/g,bC=/#.*$/,bD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bE=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bF=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bG=/^(?:GET|HEAD)$/,bH=/^\/\//,bI=/\?/,bJ=/)<[^<]*)*<\/script>/gi,bK=/^(?:select|textarea)/i,bL=/\s+/,bM=/([?&])_=[^&]*/,bN=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bO=f.fn.load,bP={},bQ={},bR,bS,bT=["*/"]+["*"];try{bR=e.href}catch(bU){bR=c.createElement("a"),bR.href="",bR=bR.href}bS=bN.exec(bR.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bO)return bO.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bJ,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bK.test(this.nodeName)||bE.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bB,"\r\n")}}):{name:b.name,value:c.replace(bB,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?bX(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),bX(a,b);return a},ajaxSettings:{url:bR,isLocal:bF.test(bS[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bT},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bV(bP),ajaxTransport:bV(bQ),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?bZ(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=b$(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bD.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bC,"").replace(bH,bS[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bL),d.crossDomain==null&&(r=bN.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bS[1]&&r[2]==bS[2]&&(r[3]||(r[1]==="http:"?80:443))==(bS[3]||(bS[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bW(bP,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bG.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bI.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bM,"$1_="+x);d.url=y+(y===d.url?(bI.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bT+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bW(bQ,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bz,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cq("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b
";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=ct.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!ct.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cu(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cu(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNaN(j)?i:j}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/iris-example/src/main/webapp/js/jquery-1.6.min.js b/iris-example/src/main/webapp/js/jquery-1.6.min.js deleted file mode 100644 index c72011d..0000000 --- a/iris-example/src/main/webapp/js/jquery-1.6.min.js +++ /dev/null @@ -1,16 +0,0 @@ -/*! - * jQuery JavaScript Library v1.6 - * 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 May 2 13:50:00 2011 -0400 - */ -(function(a,b){function cw(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function ct(a){if(!ch[a]){var b=f("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d===""){ci||(ci=c.createElement("iframe"),ci.frameBorder=ci.width=ci.height=0),c.body.appendChild(ci);if(!cj||!ci.createElement)cj=(ci.contentWindow||ci.contentDocument).document,cj.write("");b=cj.createElement(a),cj.body.appendChild(b),d=f.css(b,"display"),c.body.removeChild(ci)}ch[a]=d}return ch[a]}function cs(a,b){var c={};f.each(cn.concat.apply([],cn.slice(0,b)),function(){c[this]=a});return c}function cr(){co=b}function cq(){setTimeout(cr,0);return co=f.now()}function cg(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function cf(){try{return new a.XMLHttpRequest}catch(b){}}function b_(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){name="data-"+c.replace(j,"$1-$2").toLowerCase(),d=a.getAttribute(name);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(e){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function H(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(H,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=d.userAgent,x,y,z,A=Object.prototype.toString,B=Object.prototype.hasOwnProperty,C=Array.prototype.push,D=Array.prototype.slice,E=String.prototype.trim,F=Array.prototype.indexOf,G={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?g=[null,a,null]:g=i.exec(a);if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6",length:0,size:function(){return this.length},toArray:function(){return D.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?C.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),y.done(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(D.apply(this,arguments),"slice",D.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:C,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;y.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!y){y=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",z,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",z),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&H()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):G[A.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!B.call(a,"constructor")&&!B.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||B.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
a",b=a.getElementsByTagName("*"),d=a.getElementsByTagName("a")[0];if(!b||!b.length||!d)return{};e=c.createElement("select"),f=e.appendChild(c.createElement("option")),g=a.getElementsByTagName("input")[0],i={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.55$/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:g.value==="on",optSelected:f.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},g.checked=!0,i.noCloneChecked=g.cloneNode(!0).checked,e.disabled=!0,i.optDisabled=!f.disabled;try{delete a.test}catch(r){i.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function click(){i.noCloneEvent=!1,a.detachEvent("onclick",click)}),a.cloneNode(!0).fireEvent("onclick")),g=c.createElement("input"),g.value="t",g.setAttribute("type","radio"),i.radioValue=g.value==="t",g.setAttribute("checked","checked"),a.appendChild(g),j=c.createDocumentFragment(),j.appendChild(a.firstChild),i.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",k=c.createElement("body"),l={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"};for(p in l)k.style[p]=l[p];k.appendChild(a),c.documentElement.appendChild(k),i.appendChecked=g.checked,i.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,i.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",i.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
",m=a.getElementsByTagName("td"),q=m[0].offsetHeight===0,m[0].style.display="",m[1].style.display="none",i.reliableHiddenOffsets=q&&m[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(h=c.createElement("div"),h.style.width="0",h.style.marginRight="0",a.appendChild(h),i.reliableMarginRight=(parseInt(c.defaultView.getComputedStyle(h,null).marginRight,10)||0)===0),k.innerHTML="",c.documentElement.removeChild(k);if(a.attachEvent)for(p in{submit:1,change:1,focusin:1})o="on"+p,q=o in a,q||(a.setAttribute(o,"return;"),q=typeof a[o]=="function"),i[p+"Bubbles"]=q;return i}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[c]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;return(e.value||"").replace(p,"")}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||"set"in c&&c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b=a.selectedIndex,c=[],d=a.options,e=a.type==="select-one";if(b<0)return null;for(var g=e?b:0,h=e?b+1:d.length;g=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex",readonly:"readOnly"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);var h,i,j=g!==1||!f.isXMLDoc(a);c=j&&f.attrFix[c]||c,i=f.attrHooks[c]||(v&&(f.nodeName(a,"form")||u.test(c))?v:b);if(d!==b){if(d===null||d===!1&&!t.test(c)){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;d===!0&&!t.test(c)&&(d=c),a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j)return i.get(a,c);h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.getAttribute("value");a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}},propFix:{},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);c=i&&f.propFix[c]||c,h=f.propHooks[c];return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),f.support.getSetAttribute||(f.attrFix=f.extend(f.attrFix,{"for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder"}),v=f.attrHooks.name=f.attrHooks.value=f.valHooks.button={get:function(a,c){var d;if(c==="value"&&!f.nodeName(a,"button"))return a.getAttribute(c);d=a.getAttributeNode(c);return d&&d.specified?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var w=Object.prototype.hasOwnProperty,x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function J(a){var c=a.target,d,e;if(!!y.test(c.nodeName)&&!c.readOnly){d=f._data(c,"_change_data"),e=I(c),(a.type!=="focusout"||c.type!=="radio")&&f._data(c,"_change_data",e);if(d===b||e===d)return;if(d!=null||e)a.type="change",a.liveFired=b,f.event.trigger(a,arguments[1],c)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){return a.nodeName.toLowerCase()==="input"&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(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,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!be[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bh(a,d),e=bi(a),g=bi(d);for(h=0;e[h];++h)bh(e[h],g[h])}if(b){bg(a,d);if(c){e=bi(a),g=bi(d);for(h=0;e[h];++h)bg(e[h],g[h])}}return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[];for(var i=0,j;(j=a[i])!=null;i++){typeof j=="number"&&(j+="");if(!j)continue;if(typeof j=="string")if(!ba.test(j))j=b.createTextNode(j);else{j=j.replace(Z,"<$1>");var k=($.exec(j)||["",""])[1].toLowerCase(),l=be[k]||be._default,m=l[0],n=b.createElement("div");n.innerHTML=l[1]+j+l[2];while(m--)n=n.lastChild;if(!f.support.tbody){var o=_.test(j),p=k==="table"&&!o?n.firstChild&&n.firstChild.childNodes:l[1]===""&&!o?n.childNodes:[];for(var q=p.length-1;q>=0;--q)f.nodeName(p[q],"tbody")&&!p[q].childNodes.length&&p[q].parentNode.removeChild(p[q])}!f.support.leadingWhitespace&&Y.test(j)&&n.insertBefore(b.createTextNode(Y.exec(j)[0]),n.firstChild),j=n.childNodes}var r;if(!f.support.appendChecked)if(j[0]&&typeof (r=j.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bn.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bm.test(g)?g.replace(bm,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV;try{bU=e.href}catch(bW){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bX(bS),ajaxTransport:bX(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?b$(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=b_(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bY(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bY(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bZ(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var ca=f.now(),cb=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+ca++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cb.test(b.url)||e&&cb.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cb,l),b.url===j&&(e&&(k=k.replace(cb,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cc=a.ActiveXObject?function(){for(var a in ce)ce[a](0,1)}:!1,cd=0,ce;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cf()||cg()}:cf,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cc&&delete ce[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cd,cc&&(ce||(ce={},f(a).unload(cc)),ce[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ch={},ci,cj,ck=/^(?:toggle|show|hide)$/,cl=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cm,cn=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],co,cp=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cs("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a=f.timers,b=a.length;while(b--)a[b]()||a.splice(b,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cm),cm=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cu=/^t(?:able|d|h)$/i,cv=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cw(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!cu.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="
";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cv.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cv.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cw(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cw(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){return this[0]?parseFloat(f.css(this[0],d,"padding")):null},f.fn["outer"+c]=function(a){return this[0]?parseFloat(f.css(this[0],d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/iris-example/src/main/webapp/js/jquery-1.7.1.min.js b/iris-example/src/main/webapp/js/jquery-1.7.1.min.js deleted file mode 100644 index 198b3ff..0000000 --- a/iris-example/src/main/webapp/js/jquery-1.7.1.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.7.1 jquery.com | jquery.org/license */ -(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+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(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
"+""+"
",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
t
",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; -f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() -{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/iris-example/src/main/webapp/js/jquery-1.7.min.js b/iris-example/src/main/webapp/js/jquery-1.7.min.js deleted file mode 100644 index 3ca5e0f..0000000 --- a/iris-example/src/main/webapp/js/jquery-1.7.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v1.7 jquery.com | jquery.org/license */ -(function(a,b){function cA(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cx(a){if(!cm[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cn||(cn=c.createElement("iframe"),cn.frameBorder=cn.width=cn.height=0),b.appendChild(cn);if(!co||!cn.createElement)co=(cn.contentWindow||cn.contentDocument).document,co.write((c.compatMode==="CSS1Compat"?"":"")+""),co.close();d=co.createElement(a),co.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cn)}cm[a]=e}return cm[a]}function cw(a,b){var c={};f.each(cs.concat.apply([],cs.slice(0,b)),function(){c[this]=a});return c}function cv(){ct=b}function cu(){setTimeout(cv,0);return ct=f.now()}function cl(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ck(){try{return new a.XMLHttpRequest}catch(b){}}function ce(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bB(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function br(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bi,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bq(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bp(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bp)}function bp(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bo(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bn(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bm(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(){return!0}function M(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.add(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(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;B.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return a!=null&&m.test(a)&&!isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,unknownElems:!!a.getElementsByTagName("nav").length,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",enctype:!!c.createElement("form").enctype,submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.lastChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-999px",top:"-999px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;f(function(){var a,b,d,e,g,h,i=1,j="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",l="visibility:hidden;border:0;",n="style='"+j+"border:5px solid #000;padding:0;'",p="
"+""+"
";m=c.getElementsByTagName("body")[0];!m||(a=c.createElement("div"),a.style.cssText=l+"width:0;height:0;position:static;top:0;margin-top:"+i+"px",m.insertBefore(a,m.firstChild),o=c.createElement("div"),o.style.cssText=j+l,o.innerHTML=p,a.appendChild(o),b=o.firstChild,d=b.firstChild,g=b.nextSibling.firstChild.firstChild,h={doesNotAddBorder:d.offsetTop!==5,doesAddBorderForTableAndCells:g.offsetTop===5},d.style.position="fixed",d.style.top="20px",h.fixedPosition=d.offsetTop===20||d.offsetTop===15,d.style.position=d.style.top="",b.style.overflow="hidden",b.style.position="relative",h.subtractsBorderForOverflowNotVisible=d.offsetTop===-5,h.doesNotIncludeMarginInBodyOffset=m.offsetTop!==i,m.removeChild(a),o=a=null,f.extend(k,h))}),o.innerHTML="",n.removeChild(o),o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[f.expando]:a[f.expando]&&f.expando,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[f.expando]=n=++f.uuid:n=f.expando),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[f.expando]:f.expando;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)?b=b:b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" "));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];if(!arguments.length){if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}return b}e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!a||j===3||j===8||j===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g},removeAttr:function(a,b){var c,d,e,g,h=0;if(a.nodeType===1){d=(b||"").split(p),g=d.length;for(;h=0}})});var z=/\.(.*)$/,A=/^(?:textarea|input|select)$/i,B=/\./g,C=/ /g,D=/[^\w\s.|`]/g,E=/^([^\.]*)?(?:\.(.+))?$/,F=/\bhover(\.\S+)?/,G=/^key/,H=/^(?:mouse|contextmenu)|click/,I=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,J=function(a){var b=I.exec(a);b&& -(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},K=function(a,b){return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||a.id===b[2])&&(!b[3]||b[3].test(a.className))},L=function(a){return f.event.special.hover?a:a.replace(F,"mouseenter$1 mouseleave$1")};f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=L(c).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"",(g||!e)&&c.preventDefault();if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,n=null;for(m=e.parentNode;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l=0:t===b&&(t=o[s]=r.quick?K(m,r.quick):f(m).is(s)),t&&q.push(r);q.length&&j.push({elem:m,matches:q})}d.length>e&&j.push({elem:this,matches:d.slice(e)});for(k=0;k0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),G.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),H.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var Y="abbr article aside audio canvas datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",Z=/ jQuery\d+="(?:\d+|null)"/g,$=/^\s+/,_=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,ba=/<([\w:]+)/,bb=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bk=X(c);bj.optgroup=bj.option,bj.tbody=bj.tfoot=bj.colgroup=bj.caption=bj.thead,bj.th=bj.td,f.support.htmlSerialize||(bj._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(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,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after" -,arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Z,""):null;if(typeof a=="string"&&!bd.test(a)&&(f.support.leadingWhitespace||!$.test(a))&&!bj[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(_,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bn(a,d),e=bo(a),g=bo(d);for(h=0;e[h];++h)g[h]&&bn(e[h],g[h])}if(b){bm(a,d);if(c){e=bo(a),g=bo(d);for(h=0;e[h];++h)bm(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!bc.test(k))k=b.createTextNode(k);else{k=k.replace(_,"<$1>");var l=(ba.exec(k)||["",""])[1].toLowerCase(),m=bj[l]||bj._default,n=m[0],o=b.createElement("div");b===c?bk.appendChild(o):X(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=bb.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&$.test(k)&&o.insertBefore(b.createTextNode($.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bt.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bs,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bs.test(g)?g.replace(bs,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bB(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bC=function(a,c){var d,e,g;c=c.replace(bu,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bD=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bv.test(f)&&bw.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bB=bC||bD,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bF=/%20/g,bG=/\[\]$/,bH=/\r?\n/g,bI=/#.*$/,bJ=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bK=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bL=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bM=/^(?:GET|HEAD)$/,bN=/^\/\//,bO=/\?/,bP=/)<[^<]*)*<\/script>/gi,bQ=/^(?:select|textarea)/i,bR=/\s+/,bS=/([?&])_=[^&]*/,bT=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bU=f.fn.load,bV={},bW={},bX,bY,bZ=["*/"]+["*"];try{bX=e.href}catch(b$){bX=c.createElement("a"),bX.href="",bX=bX.href}bY=bT.exec(bX.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bU)return bU.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bP,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bQ.test(this.nodeName)||bK.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bH,"\r\n")}}):{name:b.name,value:c.replace(bH,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?cb(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),cb(a,b);return a},ajaxSettings:{url:bX,isLocal:bL.test(bY[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bZ},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:b_(bV),ajaxTransport:b_(bW),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cd(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=ce(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bJ.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bI,"").replace(bN,bY[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bR),d.crossDomain==null&&(r=bT.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bY[1]&&r[2]==bY[2]&&(r[3]||(r[1]==="http:"?80:443))==(bY[3]||(bY[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),ca(bV,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bM.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bO.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bS,"$1_="+x);d.url=y+(y===d.url?(bO.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bZ+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=ca(bW,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)cc(g,a[g],c,e);return d.join("&").replace(bF,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cf=f.now(),cg=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cf++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cg.test(b.url)||e&&cg.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cg,l),b.url===j&&(e&&(k=k.replace(cg,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var ch=a.ActiveXObject?function(){for(var a in cj)cj[a](0,1)}:!1,ci=0,cj;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ck()||cl()}:ck,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,ch&&delete cj[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++ci,ch&&(cj||(cj={},f(a).unload(ch)),cj[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cm={},cn,co,cp=/^(?:toggle|show|hide)$/,cq=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cr,cs=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],ct;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cw("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cz.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cz.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cA(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cA(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/iris-example/src/main/webapp/js/jquery-1.8.0.min.js b/iris-example/src/main/webapp/js/jquery-1.8.0.min.js deleted file mode 100644 index 066d72c..0000000 --- a/iris-example/src/main/webapp/js/jquery-1.8.0.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v@1.8.0 jquery.com | jquery.org/license */ -(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bR[a]=c,c}function ch(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||cd.test(a)?d(a,e):ch(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ch(a+"["+e+"]",b[e],c,d);else d(a,b)}function cy(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.0",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,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(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return typeof a=="object"?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b
a",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length||!d)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="
t
",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="
",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/^(?:\{.*\}|\[.*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||++p.uuid:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.shift(),e=p._queueHooks(a,b),f=function(){p.dequeue(a,b)};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),delete e.stop,d.call(a,f,e)),!c.length&&e&&e.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c-1)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c-1)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,""+d),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;jq&&u.push({elem:this,matches:o.slice(q)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bd(a,b,c,d){var e=0,f=b.length;for(;e0?h(g,c,f):[]}function bf(a,c,d,e,f){var g,h,i,j,k,l,m,n,p=0,q=f.length,s=L.POS,t=new RegExp("^"+s.source+"(?!"+r+")","i"),u=function(){var a=1,c=arguments.length-2;for(;ai){m=a.slice(i,g.index),i=n,l=[c],B.test(m)&&(k&&(l=k),k=e);if(h=H.test(m))m=m.slice(0,-5).replace(B,"$&*");g.length>1&&g[0].replace(t,u),k=be(m,g[1],g[2],l,k,h)}}k?(j=j.concat(k),(m=a.slice(i))&&m!==")"?B.test(m)?bd(m,j,d,e):Z(m,c,d,e?e.concat(k):k):o.apply(d,j)):Z(a,c,d,e)}return q===1?d:Z.uniqueSort(d)}function bg(a,b,c){var d,e,f,g=[],i=0,j=D.exec(a),k=!j.pop()&&!j.pop(),l=k&&a.match(C)||[""],m=$.preFilter,n=$.filter,o=!c&&b!==h;for(;(e=l[i])!=null&&k;i++){g.push(d=[]),o&&(e=" "+e);while(e){k=!1;if(j=B.exec(e))e=e.slice(j[0].length),k=d.push({part:j.pop().replace(A," "),captures:j});for(f in n)(j=L[f].exec(e))&&(!m[f]||(j=m[f](j,b,c)))&&(e=e.slice(j.shift().length),k=d.push({part:f,captures:j}));if(!k)break}}return k||Z.error(a),g}function bh(a,b,e){var f=b.dir,g=m++;return a||(a=function(a){return a===e}),b.first?function(b,c){while(b=b[f])if(b.nodeType===1)return a(b,c)&&b}:function(b,e){var h,i=g+"."+d,j=i+"."+c;while(b=b[f])if(b.nodeType===1){if((h=b[q])===j)return b.sizset;if(typeof h=="string"&&h.indexOf(i)===0){if(b.sizset)return b}else{b[q]=j;if(a(b,e))return b.sizset=!0,b;b.sizset=!1}}}}function bi(a,b){return a?function(c,d){var e=b(c,d);return e&&a(e===!0?c:e,d)}:b}function bj(a,b,c){var d,e,f=0;for(;d=a[f];f++)$.relative[d.part]?e=bh(e,$.relative[d.part],b):(d.captures.push(b,c),e=bi(e,$.filter[d.part].apply(null,d.captures)));return e}function bk(a){return function(b,c){var d,e=0;for(;d=a[e];e++)if(d(b,c))return!0;return!1}}var c,d,e,f,g,h=a.document,i=h.documentElement,j="undefined",k=!1,l=!0,m=0,n=[].slice,o=[].push,q=("sizcache"+Math.random()).replace(".",""),r="[\\x20\\t\\r\\n\\f]",s="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",t=s.replace("w","w#"),u="([*^$|!~]?=)",v="\\["+r+"*("+s+")"+r+"*(?:"+u+r+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+t+")|)|)"+r+"*\\]",w=":("+s+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|((?:[^,]|\\\\,|(?:,(?=[^\\[]*\\]))|(?:,(?=[^\\(]*\\))))*))\\)|)",x=":(nth|eq|gt|lt|first|last|even|odd)(?:\\((\\d*)\\)|)(?=[^-]|$)",y=r+"*([\\x20\\t\\r\\n\\f>+~])"+r+"*",z="(?=[^\\x20\\t\\r\\n\\f])(?:\\\\.|"+v+"|"+w.replace(2,7)+"|[^\\\\(),])+",A=new RegExp("^"+r+"+|((?:^|[^\\\\])(?:\\\\.)*)"+r+"+$","g"),B=new RegExp("^"+y),C=new RegExp(z+"?(?="+r+"*,|$)","g"),D=new RegExp("^(?:(?!,)(?:(?:^|,)"+r+"*"+z+")*?|"+r+"*(.*?))(\\)|$)"),E=new RegExp(z.slice(19,-6)+"\\x20\\t\\r\\n\\f>+~])+|"+y,"g"),F=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,G=/[\x20\t\r\n\f]*[+~]/,H=/:not\($/,I=/h\d/i,J=/input|select|textarea|button/i,K=/\\(?!\\)/g,L={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),NAME:new RegExp("^\\[name=['\"]?("+s+")['\"]?\\]"),TAG:new RegExp("^("+s.replace("[-","[-\\*")+")"),ATTR:new RegExp("^"+v),PSEUDO:new RegExp("^"+w),CHILD:new RegExp("^:(only|nth|last|first)-child(?:\\("+r+"*(even|odd|(([+-]|)(\\d*)n|)"+r+"*(?:([+-]|)"+r+"*(\\d+)|))"+r+"*\\)|)","i"),POS:new RegExp(x,"ig"),needsContext:new RegExp("^"+r+"*[>+~]|"+x,"i")},M={},N=[],O={},P=[],Q=function(a){return a.sizzleFilter=!0,a},R=function(a){return function(b){return b.nodeName.toLowerCase()==="input"&&b.type===a}},S=function(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}},T=function(a){var b=!1,c=h.createElement("div");try{b=a(c)}catch(d){}return c=null,b},U=T(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),V=T(function(a){a.id=q+0,a.innerHTML="
",i.insertBefore(a,i.firstChild);var b=h.getElementsByName&&h.getElementsByName(q).length===2+h.getElementsByName(q+0).length;return g=!h.getElementById(q),i.removeChild(a),b}),W=T(function(a){return a.appendChild(h.createComment("")),a.getElementsByTagName("*").length===0}),X=T(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==j&&a.firstChild.getAttribute("href")==="#"}),Y=T(function(a){return a.innerHTML="",!a.getElementsByClassName||a.getElementsByClassName("e").length===0?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length!==1)}),Z=function(a,b,c,d){c=c||[],b=b||h;var e,f,g,i,j=b.nodeType;if(j!==1&&j!==9)return[];if(!a||typeof a!="string")return c;g=ba(b);if(!g&&!d)if(e=F.exec(a))if(i=e[1]){if(j===9){f=b.getElementById(i);if(!f||!f.parentNode)return c;if(f.id===i)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(i))&&bb(b,f)&&f.id===i)return c.push(f),c}else{if(e[2])return o.apply(c,n.call(b.getElementsByTagName(a),0)),c;if((i=e[3])&&Y&&b.getElementsByClassName)return o.apply(c,n.call(b.getElementsByClassName(i),0)),c}return bm(a,b,c,d,g)},$=Z.selectors={cacheLength:50,match:L,order:["ID","TAG"],attrHandle:{},createPseudo:Q,find:{ID:g?function(a,b,c){if(typeof b.getElementById!==j&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==j&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==j&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:W?function(a,b){if(typeof b.getElementsByTagName!==j)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(K,""),a[3]=(a[4]||a[5]||"").replace(K,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||Z.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&Z.error(a[0]),a},PSEUDO:function(a){var b,c=a[4];return L.CHILD.test(a[0])?null:(c&&(b=D.exec(c))&&b.pop()&&(a[0]=a[0].slice(0,b[0].length-c.length-1),c=b[0].slice(0,-1)),a.splice(2,3,c||a[3]),a)}},filter:{ID:g?function(a){return a=a.replace(K,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(K,""),function(b){var c=typeof b.getAttributeNode!==j&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(K,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=M[a];return b||(b=M[a]=new RegExp("(^|"+r+")"+a+"("+r+"|$)"),N.push(a),N.length>$.cacheLength&&delete M[N.shift()]),function(a){return b.test(a.className||typeof a.getAttribute!==j&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return b?function(d){var e=Z.attr(d,a),f=e+"";if(e==null)return b==="!=";switch(b){case"=":return f===c;case"!=":return f!==c;case"^=":return c&&f.indexOf(c)===0;case"*=":return c&&f.indexOf(c)>-1;case"$=":return c&&f.substr(f.length-c.length)===c;case"~=":return(" "+f+" ").indexOf(c)>-1;case"|=":return f===c||f.substr(0,c.length+1)===c+"-"}}:function(b){return Z.attr(b,a)!=null}},CHILD:function(a,b,c,d){if(a==="nth"){var e=m++;return function(a){var b,f,g=0,h=a;if(c===1&&d===0)return!0;b=a.parentNode;if(b&&(b[q]!==e||!a.sizset)){for(h=b.firstChild;h;h=h.nextSibling)if(h.nodeType===1){h.sizset=++g;if(h===a)break}b[q]=e}return f=a.sizset-d,c===0?f===0:f%c===0&&f/c>=0}}return function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b,c,d){var e=$.pseudos[a]||$.pseudos[a.toLowerCase()];return e||Z.error("unsupported pseudo: "+a),e.sizzleFilter?e(b,c,d):e}},pseudos:{not:Q(function(a,b,c){var d=bl(a.replace(A,"$1"),b,c);return function(a){return!d(a)}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!$.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},contains:Q(function(a){return function(b){return(b.textContent||b.innerText||bc(b)).indexOf(a)>-1}}),has:Q(function(a){return function(b){return Z(a,b).length>0}}),header:function(a){return I.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:R("radio"),checkbox:R("checkbox"),file:R("file"),password:R("password"),image:R("image"),submit:S("submit"),reset:S("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return J.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b,c){return c?a.slice(1):[a[0]]},last:function(a,b,c){var d=a.pop();return c?a:[d]},even:function(a,b,c){var d=[],e=c?1:0,f=a.length;for(;e$.cacheLength&&delete O[P.shift()],g};Z.matches=function(a,b){return Z(a,null,null,b)},Z.matchesSelector=function(a,b){return Z(b,null,null,[a]).length>0};var bm=function(a,b,e,f,g){a=a.replace(A,"$1");var h,i,j,k,l,m,p,q,r,s=a.match(C),t=a.match(E),u=b.nodeType;if(L.POS.test(a))return bf(a,b,e,f,s);if(f)h=n.call(f,0);else if(s&&s.length===1){if(t.length>1&&u===9&&!g&&(s=L.ID.exec(t[0]))){b=$.find.ID(s[1],b,g)[0];if(!b)return e;a=a.slice(t.shift().length)}q=(s=G.exec(t[0]))&&!s.index&&b.parentNode||b,r=t.pop(),m=r.split(":not")[0];for(j=0,k=$.order.length;j",a.querySelectorAll("[selected]").length||e.push("\\["+r+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),T(function(a){a.innerHTML="

",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+r+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=e.length&&new RegExp(e.join("|")),bm=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a)))if(d.nodeType===9)try{return o.apply(f,n.call(d.querySelectorAll(a),0)),f}catch(i){}else if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){var j=d.getAttribute("id"),k=j||q,l=G.test(a)&&d.parentNode||d;j?k=k.replace(c,"\\$&"):d.setAttribute("id",k);try{return o.apply(f,n.call(l.querySelectorAll(a.replace(C,"[id='"+k+"'] $&")),0)),f}catch(i){}finally{j||d.removeAttribute("id")}}return b(a,d,f,g,h)},g&&(T(function(b){a=g.call(b,"div");try{g.call(b,"[test!='']:sizzle"),f.push($.match.PSEUDO)}catch(c){}}),f=new RegExp(f.join("|")),Z.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!ba(b)&&!f.test(c)&&(!e||!e.test(c)))try{var h=g.call(b,c);if(h||a||b.document&&b.document.nodeType!==11)return h}catch(i){}return Z(c,null,null,[b]).length>0})}(),Z.attr=p.attr,p.find=Z,p.expr=Z.selectors,p.expr[":"]=p.expr.pseudos,p.unique=Z.uniqueSort,p.text=Z.getText,p.isXMLDoc=Z.isXML,p.contains=Z.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X
","
"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=0,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(g=b===e&&bA;(h=a[s])!=null;s++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{g=g||bk(b),l=l||g.appendChild(b.createElement("div")),h=h.replace(bo,"<$1>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(f=n.length-1;f>=0;--f)p.nodeName(n[f],"tbody")&&!n[f].childNodes.length&&n[f].parentNode.removeChild(n[f])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l=g.lastChild}h.nodeType?t.push(h):t=p.merge(t,h)}l&&(g.removeChild(l),h=l=g=null);if(!p.support.appendChecked)for(s=0;(h=t[s])!=null;s++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(s=0;(h=t[s])!=null;s++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[s+1,0].concat(r)),s+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^margin/,bO=new RegExp("^("+q+")(.*)$","i"),bP=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bQ=new RegExp("^([-+])=("+q+")","i"),bR={},bS={position:"absolute",visibility:"hidden",display:"block"},bT={letterSpacing:0,fontWeight:400,lineHeight:1},bU=["Top","Right","Bottom","Left"],bV=["Webkit","O","Moz","ms"],bW=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return bZ(this,!0)},hide:function(){return bZ(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bW.apply(this,arguments):this.each(function(){(c?a:bY(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bX(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bQ.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bX(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bT&&(f=bT[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(a,b){var c,d,e,f,g=getComputedStyle(a,null),h=a.style;return g&&(c=g[b],c===""&&!p.contains(a.ownerDocument.documentElement,a)&&(c=p.style(a,b)),bP.test(c)&&bN.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=c,c=g.width,h.width=d,h.minWidth=e,h.maxWidth=f)),c}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bP.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth!==0||bH(a,"display")!=="none"?ca(a,b,d):p.swap(a,bS,function(){return ca(a,b,d)})},set:function(a,c,d){return b$(a,c,d?b_(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bP.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bU[d]+b]=e[d]||e[d-2]||e[0];return f}},bN.test(a)||(p.cssHooks[a+b].set=b$)});var cc=/%20/g,cd=/\[\]$/,ce=/\r?\n/g,cf=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,cg=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||cg.test(this.nodeName)||cf.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(ce,"\r\n")}}):{name:b.name,value:c.replace(ce,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ch(d,a[d],c,f);return e.join("&").replace(cc,"+")};var ci,cj,ck=/#.*$/,cl=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cm=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,cn=/^(?:GET|HEAD)$/,co=/^\/\//,cp=/\?/,cq=/)<[^<]*)*<\/script>/gi,cr=/([?&])_=[^&]*/,cs=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,ct=p.fn.load,cu={},cv={},cw=["*/"]+["*"];try{ci=f.href}catch(cx){ci=e.createElement("a"),ci.href="",ci=ci.href}cj=cs.exec(ci.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&ct)return ct.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("
").append(a.replace(cq,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cA(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cA(a,b),a},ajaxSettings:{url:ci,isLocal:cm.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cw},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cy(cu),ajaxTransport:cy(cv),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cB(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cC(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=""+(c||y),k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cl.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(ck,"").replace(co,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=cs.exec(l.url.toLowerCase()),l.crossDomain=!(!i||i[1]==cj[1]&&i[2]==cj[2]&&(i[3]||(i[1]==="http:"?80:443))==(cj[3]||(cj[1]==="http:"?80:443)))),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cz(cu,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!cn.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cp.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cr,"$1_="+z);l.url=A+(A===l.url?(cp.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cw+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cz(cv,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cD=[],cE=/\?/,cF=/(=)\?(?=&|$)|\?\?/,cG=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cD.pop()||p.expando+"_"+cG++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cF.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cF.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cF,"$1"+f):m?c.data=i.replace(cF,"$1"+f):k&&(c.url+=(cE.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cD.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cH,cI=a.ActiveXObject?function(){for(var a in cH)cH[a](0,1)}:!1,cJ=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cK()||cL()}:cK,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cI&&delete cH[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cJ,cI&&(cH||(cH={},p(a).unload(cI)),cH[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cM,cN,cO=/^(?:toggle|show|hide)$/,cP=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cQ=/queueHooks$/,cR=[cX],cS={"*":[function(a,b){var c,d,e,f=this.createTween(a,b),g=cP.exec(b),h=f.cur(),i=+h||0,j=1;if(g){c=+g[2],d=g[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&i){i=p.css(f.elem,a,!0)||c||1;do e=j=j||".5",i=i/j,p.style(f.elem,a,i+d),j=f.cur()/h;while(j!==1&&j!==e)}f.unit=d,f.start=i,f.end=g[1]?i+(g[1]+1)*c:c}return f}]};p.Animation=p.extend(cV,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c$.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c$.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=c_(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window); \ No newline at end of file diff --git a/iris-example/src/main/webapp/js/jquery-1.8.2.min.js b/iris-example/src/main/webapp/js/jquery-1.8.2.min.js deleted file mode 100644 index f65cf1d..0000000 --- a/iris-example/src/main/webapp/js/jquery-1.8.2.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v1.8.2 jquery.com | jquery.org/license */ -(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ci(a+"["+e+"]",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.2",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,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(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return a!=null?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b
a",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="
t
",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="
",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||p.guid++:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e==="inprogress"&&(e=c.shift(),d--),e&&(b==="fx"&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c=0)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c=0)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,d+""),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j=0:p.find(m,this,null,[f]).length),h[m]&&j.push(l);j.length&&u.push({elem:f,matches:j})}o.length>q&&u.push({elem:this,matches:o.slice(q)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bc(a,b,c,d){c=c||[],b=b||r;var e,f,i,j,k=b.nodeType;if(!a||typeof a!="string")return c;if(k!==1&&k!==9)return[];i=g(b);if(!i&&!d)if(e=P.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&h(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return w.apply(c,x.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&_&&b.getElementsByClassName)return w.apply(c,x.call(b.getElementsByClassName(j),0)),c}return bp(a.replace(L,"$1"),b,c,d,i)}function bd(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function be(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function bf(a){return z(function(b){return b=+b,z(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function bg(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bh(a,b){var c,d,f,g,h,i,j,k=C[o][a];if(k)return b?0:k.slice(0);h=a,i=[],j=e.preFilter;while(h){if(!c||(d=M.exec(h)))d&&(h=h.slice(d[0].length)),i.push(f=[]);c=!1;if(d=N.exec(h))f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=d[0].replace(L," ");for(g in e.filter)(d=W[g].exec(h))&&(!j[g]||(d=j[g](d,r,!0)))&&(f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=g,c.matches=d);if(!c)break}return b?h.length:h?bc.error(a):C(a,i).slice(0)}function bi(a,b,d){var e=b.dir,f=d&&b.dir==="parentNode",g=u++;return b.first?function(b,c,d){while(b=b[e])if(f||b.nodeType===1)return a(b,c,d)}:function(b,d,h){if(!h){var i,j=t+" "+g+" ",k=j+c;while(b=b[e])if(f||b.nodeType===1){if((i=b[o])===k)return b.sizset;if(typeof i=="string"&&i.indexOf(j)===0){if(b.sizset)return b}else{b[o]=k;if(a(b,d,h))return b.sizset=!0,b;b.sizset=!1}}}else while(b=b[e])if(f||b.nodeType===1)if(a(b,d,h))return b}}function bj(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function bk(a,b,c,d,e){var f,g=[],h=0,i=a.length,j=b!=null;for(;h-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==l)||((b=c).nodeType?j(a,c,d):k(a,c,d))}];for(;i1&&bj(m),i>1&&a.slice(0,i-1).join("").replace(L,"$1"),c,i0,f=a.length>0,g=function(h,i,j,k,m){var n,o,p,q=[],s=0,u="0",x=h&&[],y=m!=null,z=l,A=h||f&&e.find.TAG("*",m&&i.parentNode||i),B=t+=z==null?1:Math.E;y&&(l=i!==r&&i,c=g.el);for(;(n=A[u])!=null;u++){if(f&&n){for(o=0;p=a[o];o++)if(p(n,i,j)){k.push(n);break}y&&(t=B,c=++g.el)}d&&((n=!p&&n)&&s--,h&&x.push(n))}s+=u;if(d&&u!==s){for(o=0;p=b[o];o++)p(x,q,i,j);if(h){if(s>0)while(u--)!x[u]&&!q[u]&&(q[u]=v.call(k));q=bk(q)}w.apply(k,q),y&&!h&&q.length>0&&s+b.length>1&&bc.uniqueSort(k)}return y&&(t=B,l=z),x};return g.el=0,d?z(g):g}function bo(a,b,c,d){var e=0,f=b.length;for(;e2&&(j=h[0]).type==="ID"&&b.nodeType===9&&!f&&e.relative[h[1].type]){b=e.find.ID(j.matches[0].replace(V,""),b,f)[0];if(!b)return c;a=a.slice(h.shift().length)}for(g=W.POS.test(a)?-1:h.length-1;g>=0;g--){j=h[g];if(e.relative[k=j.type])break;if(l=e.find[k])if(d=l(j.matches[0].replace(V,""),R.test(h[0].type)&&b.parentNode||b,f)){h.splice(g,1),a=d.length&&h.join("");if(!a)return w.apply(c,x.call(d,0)),c;break}}}return i(a,m)(d,b,f,c,R.test(a)),c}function bq(){}var c,d,e,f,g,h,i,j,k,l,m=!0,n="undefined",o=("sizcache"+Math.random()).replace(".",""),q=String,r=a.document,s=r.documentElement,t=0,u=0,v=[].pop,w=[].push,x=[].slice,y=[].indexOf||function(a){var b=0,c=this.length;for(;be.cacheLength&&delete a[b.shift()],a[c]=d},a)},B=A(),C=A(),D=A(),E="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",G=F.replace("w","w#"),H="([*^$|!~]?=)",I="\\["+E+"*("+F+")"+E+"*(?:"+H+E+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+G+")|)|)"+E+"*\\]",J=":("+F+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+I+")|[^:]|\\\\.)*|.*))\\)|)",K=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+E+"*((?:-\\d)?\\d*)"+E+"*\\)|)(?=[^-]|$)",L=new RegExp("^"+E+"+|((?:^|[^\\\\])(?:\\\\.)*)"+E+"+$","g"),M=new RegExp("^"+E+"*,"+E+"*"),N=new RegExp("^"+E+"*([\\x20\\t\\r\\n\\f>+~])"+E+"*"),O=new RegExp(J),P=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,Q=/^:not/,R=/[\x20\t\r\n\f]*[+~]/,S=/:not\($/,T=/h\d/i,U=/input|select|textarea|button/i,V=/\\(?!\\)/g,W={ID:new RegExp("^#("+F+")"),CLASS:new RegExp("^\\.("+F+")"),NAME:new RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:new RegExp("^("+F.replace("w","w*")+")"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+J),POS:new RegExp(K,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+E+"*(even|odd|(([+-]|)(\\d*)n|)"+E+"*(?:([+-]|)"+E+"*(\\d+)|))"+E+"*\\)|)","i"),needsContext:new RegExp("^"+E+"*[>+~]|"+K,"i")},X=function(a){var b=r.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}},Y=X(function(a){return a.appendChild(r.createComment("")),!a.getElementsByTagName("*").length}),Z=X(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute("href")==="#"}),$=X(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),_=X(function(a){return a.innerHTML="",!a.getElementsByClassName||!a.getElementsByClassName("e").length?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length===2)}),ba=X(function(a){a.id=o+0,a.innerHTML="
",s.insertBefore(a,s.firstChild);var b=r.getElementsByName&&r.getElementsByName(o).length===2+r.getElementsByName(o+0).length;return d=!r.getElementById(o),s.removeChild(a),b});try{x.call(s.childNodes,0)[0].nodeType}catch(bb){x=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}bc.matches=function(a,b){return bc(a,null,null,b)},bc.matchesSelector=function(a,b){return bc(b,null,null,[a]).length>0},f=bc.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=f(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=f(b);return c},g=bc.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},h=bc.contains=s.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:s.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc.attr=function(a,b){var c,d=g(a);return d||(b=b.toLowerCase()),(c=e.attrHandle[b])?c(a):d||$?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},e=bc.selectors={cacheLength:50,createPseudo:z,match:W,attrHandle:Z?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},find:{ID:d?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:Y?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:ba&&function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:_&&function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(V,""),a[3]=(a[4]||a[5]||"").replace(V,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||bc.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&bc.error(a[0]),a},PSEUDO:function(a){var b,c;if(W.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(b=a[4])O.test(b)&&(c=bh(b,!0))&&(c=b.indexOf(")",b.length-c)-b.length)&&(b=b.slice(0,c),a[0]=a[0].slice(0,c)),a[2]=b;return a.slice(0,3)}},filter:{ID:d?function(a){return a=a.replace(V,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(V,""),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(V,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=B[o][a];return b||(b=B(a,new RegExp("(^|"+E+")"+a+"("+E+"|$)"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return function(d,e){var f=bc.attr(d,a);return f==null?b==="!=":b?(f+="",b==="="?f===c:b==="!="?f!==c:b==="^="?c&&f.indexOf(c)===0:b==="*="?c&&f.indexOf(c)>-1:b==="$="?c&&f.substr(f.length-c.length)===c:b==="~="?(" "+f+" ").indexOf(c)>-1:b==="|="?f===c||f.substr(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d){return a==="nth"?function(a){var b,e,f=a.parentNode;if(c===1&&d===0)return!0;if(f){e=0;for(b=f.firstChild;b;b=b.nextSibling)if(b.nodeType===1){e++;if(a===b)break}}return e-=d,e===c||e%c===0&&e/c>=0}:function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b){var c,d=e.pseudos[a]||e.setFilters[a.toLowerCase()]||bc.error("unsupported pseudo: "+a);return d[o]?d(b):d.length>1?(c=[a,a,"",b],e.setFilters.hasOwnProperty(a.toLowerCase())?z(function(a,c){var e,f=d(a,b),g=f.length;while(g--)e=y.call(a,f[g]),a[e]=!(c[e]=f[g])}):function(a){return d(a,0,c)}):d}},pseudos:{not:z(function(a){var b=[],c=[],d=i(a.replace(L,"$1"));return d[o]?z(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)if(f=g[h])a[h]=!(b[h]=f)}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:z(function(a){return function(b){return bc(a,b).length>0}}),contains:z(function(a){return function(b){return(b.textContent||b.innerText||f(b)).indexOf(a)>-1}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!e.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},header:function(a){return T.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:bd("radio"),checkbox:bd("checkbox"),file:bd("file"),password:bd("password"),image:bd("image"),submit:be("submit"),reset:be("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return U.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement},first:bf(function(a,b,c){return[0]}),last:bf(function(a,b,c){return[b-1]}),eq:bf(function(a,b,c){return[c<0?c+b:c]}),even:bf(function(a,b,c){for(var d=0;d=0;)a.push(d);return a}),gt:bf(function(a,b,c){for(var d=c<0?c+b:c;++d",a.querySelectorAll("[selected]").length||e.push("\\["+E+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),X(function(a){a.innerHTML="

",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+E+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=new RegExp(e.join("|")),bp=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a))){var i,j,k=!0,l=o,m=d,n=d.nodeType===9&&a;if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){i=bh(a),(k=d.getAttribute("id"))?l=k.replace(c,"\\$&"):d.setAttribute("id",l),l="[id='"+l+"'] ",j=i.length;while(j--)i[j]=l+i[j].join("");m=R.test(a)&&d.parentNode||d,n=i.join(",")}if(n)try{return w.apply(f,x.call(m.querySelectorAll(n),0)),f}catch(p){}finally{k||d.removeAttribute("id")}}return b(a,d,f,g,h)},h&&(X(function(b){a=h.call(b,"div");try{h.call(b,"[test!='']:sizzle"),f.push("!=",J)}catch(c){}}),f=new RegExp(f.join("|")),bc.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!g(b)&&!f.test(c)&&(!e||!e.test(c)))try{var i=h.call(b,c);if(i||a||b.document&&b.document.nodeType!==11)return i}catch(j){}return bc(c,null,null,[b]).length>0})}(),e.pseudos.nth=e.pseudos.eq,e.filters=bq.prototype=e.pseudos,e.setFilters=new bq,bc.attr=p.attr,p.find=bc,p.expr=bc.selectors,p.expr[":"]=p.expr.pseudos,p.unique=bc.uniqueSort,p.text=bc.getText,p.isXMLDoc=bc.isXML,p.contains=bc.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X
","
"]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(f=0;(h=a[f])!=null;f++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement("div"),s.appendChild(l),h=h.replace(bo,"<$1>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],"tbody")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp("^("+q+")(.*)$","i"),bQ=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bR=new RegExp("^([-+])=("+q+")","i"),bS={},bT={position:"absolute",visibility:"hidden",display:"block"},bU={letterSpacing:0,fontWeight:400},bV=["Top","Right","Bottom","Left"],bW=["Webkit","O","Moz","ms"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===""&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,"display"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\[\]$/,cf=/\r?\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,"\r\n")}}):{name:b.name,value:c.replace(cf,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join("&").replace(cd,"+")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\/\//,cq=/\?/,cr=/)<[^<]*)*<\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=["*/"]+["*"];try{ck=f.href}catch(cy){ck=e.createElement("a"),ck.href="",ck=ck.href}cj=ct.exec(ck.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("
").append(a.replace(cr,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:ck,isLocal:cn.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=(c||y)+"",k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(cl,"").replace(cp,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase())||!1,l.crossDomain=i&&i.join(":")+(i[3]?"":i[1]==="http:"?80:443)!==cj.join(":")+(cj[3]?"":cj[1]==="http:"?80:443)),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,"$1_="+z);l.url=A+(A===l.url?(cq.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cx+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\?/,cG=/(=)\?(?=&|$)|\?\?/,cH=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cE.pop()||p.expando+"_"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cG.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,"$1"+f):m?c.data=i.replace(cG,"$1"+f):k&&(c.url+=(cF.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cR=/queueHooks$/,cS=[cY],cT={"*":[function(a,b){var c,d,e=this.createTween(a,b),f=cQ.exec(b),g=e.cur(),h=+g||0,i=1,j=20;if(f){c=+f[2],d=f[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&h){h=p.css(e.elem,a,!0)||c||1;do i=i||".5",h=h/i,p.style(e.elem,a,h+d);while(i!==(i=e.cur()/g)&&i!==1&&--j)}e.unit=d,e.start=h,e.end=f[1]?h+(f[1]+1)*c:c}return e}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c_.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window); \ No newline at end of file diff --git a/iris-example/src/main/webapp/js/zepto.min.js b/iris-example/src/main/webapp/js/zepto.min.js deleted file mode 100644 index 8a76710..0000000 --- a/iris-example/src/main/webapp/js/zepto.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/* Zepto v1.0rc1 - polyfill zepto event detect fx ajax form touch - zeptojs.com/license */ -(function(a){String.prototype.trim===a&&(String.prototype.trim=function(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}),Array.prototype.reduce===a&&(Array.prototype.reduce=function(b){if(this===void 0||this===null)throw new TypeError;var c=Object(this),d=c.length>>>0,e=0,f;if(typeof b!="function")throw new TypeError;if(d==0&&arguments.length==1)throw new TypeError;if(arguments.length>=2)f=arguments[1];else do{if(e in c){f=c[e++];break}if(++e>=d)throw new TypeError}while(!0);while(e0?[].concat.apply([],a):a}function H(a){return a.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function I(a){return a in i?i[a]:i[a]=new RegExp("(^|\\s)"+a+"(\\s|$)")}function J(a,b){return typeof b=="number"&&!k[H(a)]?b+"px":b}function K(a){var b,c;return h[a]||(b=g.createElement(a),g.body.appendChild(b),c=j(b,"").getPropertyValue("display"),b.parentNode.removeChild(b),c=="none"&&(c="block"),h[a]=c),h[a]}function L(b,d){return d===a?c(b):c(b).filter(d)}function M(a,b,c,d){return A(b)?b.call(a,c,d):b}function N(a,b,d){var e=a%2?b:b.parentNode;e?e.insertBefore(d,a?a==1?e.firstChild:a==2?b:null:b.nextSibling):c(d).remove()}function O(a,b){b(a);for(var c in a.childNodes)O(a.childNodes[c],b)}var a,b,c,d,e=[],f=e.slice,g=window.document,h={},i={},j=g.defaultView.getComputedStyle,k={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},l=/^\s*<(\w+|!)[^>]*>/,m=[1,3,8,9,11],n=["after","prepend","before","append"],o=g.createElement("table"),p=g.createElement("tr"),q={tr:g.createElement("tbody"),tbody:o,thead:o,tfoot:o,td:p,th:p,"*":g.createElement("div")},r=/complete|loaded|interactive/,s=/^\.([\w-]+)$/,t=/^#([\w-]+)$/,u=/^[\w-]+$/,v={}.toString,w={},x,y,z=g.createElement("div");return w.matches=function(a,b){if(!a||a.nodeType!==1)return!1;var c=a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.matchesSelector;if(c)return c.call(a,b);var d,e=a.parentNode,f=!e;return f&&(e=z).appendChild(a),d=~w.qsa(e,b).indexOf(a),f&&z.removeChild(a),d},x=function(a){return a.replace(/-+(.)?/g,function(a,b){return b?b.toUpperCase():""})},y=function(a){return a.filter(function(b,c){return a.indexOf(b)==c})},w.fragment=function(b,d){d===a&&(d=l.test(b)&&RegExp.$1),d in q||(d="*");var e=q[d];return e.innerHTML=""+b,c.each(f.call(e.childNodes),function(){e.removeChild(this)})},w.Z=function(a,b){return a=a||[],a.__proto__=arguments.callee.prototype,a.selector=b||"",a},w.isZ=function(a){return a instanceof w.Z},w.init=function(b,d){if(!b)return w.Z();if(A(b))return c(g).ready(b);if(w.isZ(b))return b;var e;if(D(b))e=F(b);else if(C(b))e=[c.extend({},b)],b=null;else if(m.indexOf(b.nodeType)>=0||b===window)e=[b],b=null;else if(l.test(b))e=w.fragment(b.trim(),RegExp.$1),b=null;else{if(d!==a)return c(d).find(b);e=w.qsa(g,b)}return w.Z(e,b)},c=function(a,b){return w.init(a,b)},c.extend=function(c){return f.call(arguments,1).forEach(function(d){for(b in d)d[b]!==a&&(c[b]=d[b])}),c},w.qsa=function(a,b){var c;return a===g&&t.test(b)?(c=a.getElementById(RegExp.$1))?[c]:e:a.nodeType!==1&&a.nodeType!==9?e:f.call(s.test(b)?a.getElementsByClassName(RegExp.$1):u.test(b)?a.getElementsByTagName(b):a.querySelectorAll(b))},c.isFunction=A,c.isObject=B,c.isArray=D,c.isPlainObject=C,c.inArray=function(a,b,c){return e.indexOf.call(b,a,c)},c.trim=function(a){return a.trim()},c.uuid=0,c.map=function(a,b){var c,d=[],e,f;if(E(a))for(e=0;e0&&w.matches(this[0],a)},not:function(b){var d=[];if(A(b)&&b.call!==a)this.each(function(a){b.call(this,a)||d.push(this)});else{var e=typeof b=="string"?this.filter(b):E(b)&&A(b.item)?f.call(b):c(b);this.forEach(function(a){e.indexOf(a)<0&&d.push(a)})}return c(d)},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){var a=this[0];return a&&!B(a)?a:c(a)},last:function(){var a=this[this.length-1];return a&&!B(a)?a:c(a)},find:function(a){var b;return this.length==1?b=w.qsa(this[0],a):b=this.map(function(){return w.qsa(this,a)}),c(b)},closest:function(a,b){var d=this[0];while(d&&!w.matches(d,a))d=d!==b&&d!==g&&d.parentNode;return c(d)},parents:function(a){var b=[],d=this;while(d.length>0)d=c.map(d,function(a){if((a=a.parentNode)&&a!==g&&b.indexOf(a)<0)return b.push(a),a});return L(b,a)},parent:function(a){return L(y(this.pluck("parentNode")),a)},children:function(a){return L(this.map(function(){return f.call(this.children)}),a)},siblings:function(a){return L(this.map(function(a,b){return f.call(b.parentNode.children).filter(function(a){return a!==b})}),a)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(a){return this.map(function(){return this[a]})},show:function(){return this.each(function(){this.style.display=="none"&&(this.style.display=null),j(this,"").getPropertyValue("display")=="none"&&(this.style.display=K(this.nodeName))})},replaceWith:function(a){return this.before(a).remove()},wrap:function(a){return this.each(function(){c(this).wrapAll(c(a)[0].cloneNode(!1))})},wrapAll:function(a){return this[0]&&(c(this[0]).before(a=c(a)),a.append(this)),this},unwrap:function(){return this.parent().each(function(){c(this).replaceWith(c(this).children())}),this},clone:function(){return c(this.map(function(){return this.cloneNode(!0)}))},hide:function(){return this.css("display","none")},toggle:function(b){return(b===a?this.css("display")=="none":b)?this.show():this.hide()},prev:function(){return c(this.pluck("previousElementSibling"))},next:function(){return c(this.pluck("nextElementSibling"))},html:function(b){return b===a?this.length>0?this[0].innerHTML:null:this.each(function(a){var d=this.innerHTML;c(this).empty().append(M(this,b,a,d))})},text:function(b){return b===a?this.length>0?this[0].textContent:null:this.each(function(){this.textContent=b})},attr:function(c,d){var e;return typeof c=="string"&&d===a?this.length==0||this[0].nodeType!==1?a:c=="value"&&this[0].nodeName=="INPUT"?this.val():!(e=this[0].getAttribute(c))&&c in this[0]?this[0][c]:e:this.each(function(a){if(this.nodeType!==1)return;if(B(c))for(b in c)this.setAttribute(b,c[b]);else this.setAttribute(c,M(this,d,a,this.getAttribute(c)))})},removeAttr:function(a){return this.each(function(){this.nodeType===1&&this.removeAttribute(a)})},prop:function(b,c){return c===a?this[0]?this[0][b]:a:this.each(function(a){this[b]=M(this,c,a,this[b])})},data:function(b,c){var d=this.attr("data-"+H(b),c);return d!==null?d:a},val:function(b){return b===a?this.length>0?this[0].value:a:this.each(function(a){this.value=M(this,b,a,this.value)})},offset:function(){if(this.length==0)return null;var a=this[0].getBoundingClientRect();return{left:a.left+window.pageXOffset,top:a.top+window.pageYOffset,width:a.width,height:a.height}},css:function(c,d){if(d===a&&typeof c=="string")return this.length==0?a:this[0].style[x(c)]||j(this[0],"").getPropertyValue(c);var e="";for(b in c)typeof c[b]=="string"&&c[b]==""?this.each(function(){this.style.removeProperty(H(b))}):e+=H(b)+":"+J(b,c[b])+";";return typeof c=="string"&&(d==""?this.each(function(){this.style.removeProperty(H(c))}):e=H(c)+":"+J(c,d)),this.each(function(){this.style.cssText+=";"+e})},index:function(a){return a?this.indexOf(c(a)[0]):this.parent().children().indexOf(this[0])},hasClass:function(a){return this.length<1?!1:I(a).test(this[0].className)},addClass:function(a){return this.each(function(b){d=[];var e=this.className,f=M(this,a,b,e);f.split(/\s+/g).forEach(function(a){c(this).hasClass(a)||d.push(a)},this),d.length&&(this.className+=(e?" ":"")+d.join(" "))})},removeClass:function(b){return this.each(function(c){if(b===a)return this.className="";d=this.className,M(this,b,c,d).split(/\s+/g).forEach(function(a){d=d.replace(I(a)," ")}),this.className=d.trim()})},toggleClass:function(b,d){return this.each(function(e){var f=M(this,b,e,this.className);(d===a?!c(this).hasClass(f):d)?c(this).addClass(f):c(this).removeClass(f)})}},["width","height"].forEach(function(b){c.fn[b]=function(d){var e,f=b.replace(/./,function(a){return a[0].toUpperCase()});return d===a?this[0]==window?window["inner"+f]:this[0]==g?g.documentElement["offset"+f]:(e=this.offset())&&e[b]:this.each(function(a){var e=c(this);e.css(b,M(this,d,a,e[b]()))})}}),n.forEach(function(a,b){c.fn[a]=function(){var a=c.map(arguments,function(a){return B(a)?a:w.fragment(a)});if(a.length<1)return this;var d=this.length,e=d>1,f=b<2;return this.each(function(c,g){for(var h=0;h0&&this.bind(o,n),setTimeout(function(){m.css(i),e<=0&&setTimeout(function(){m.each(function(){n.call(this)})},0)},0),this},i=null}(Zepto),function($){function triggerAndReturn(a,b,c){var d=$.Event(b);return $(a).trigger(d,c),!d.defaultPrevented}function triggerGlobal(a,b,c,d){if(a.global)return triggerAndReturn(b||document,c,d)}function ajaxStart(a){a.global&&$.active++===0&&triggerGlobal(a,null,"ajaxStart")}function ajaxStop(a){a.global&&!--$.active&&triggerGlobal(a,null,"ajaxStop")}function ajaxBeforeSend(a,b){var c=b.context;if(b.beforeSend.call(c,a,b)===!1||triggerGlobal(b,c,"ajaxBeforeSend",[a,b])===!1)return!1;triggerGlobal(b,c,"ajaxSend",[a,b])}function ajaxSuccess(a,b,c){var d=c.context,e="success";c.success.call(d,a,e,b),triggerGlobal(c,d,"ajaxSuccess",[b,c,a]),ajaxComplete(e,b,c)}function ajaxError(a,b,c,d){var e=d.context;d.error.call(e,c,b,a),triggerGlobal(d,e,"ajaxError",[c,d,a]),ajaxComplete(b,c,d)}function ajaxComplete(a,b,c){var d=c.context;c.complete.call(d,b,a),triggerGlobal(c,d,"ajaxComplete",[b,c]),ajaxStop(c)}function empty(){}function mimeToDataType(a){return a&&(a==htmlType?"html":a==jsonType?"json":scriptTypeRE.test(a)?"script":xmlTypeRE.test(a)&&"xml")||"text"}function appendQuery(a,b){return(a+"&"+b).replace(/[&?]{1,2}/,"?")}function serializeData(a){isObject(a.data)&&(a.data=$.param(a.data)),a.data&&(!a.type||a.type.toUpperCase()=="GET")&&(a.url=appendQuery(a.url,a.data))}function serialize(a,b,c,d){var e=$.isArray(b);$.each(b,function(b,f){d&&(b=c?d:d+"["+(e?"":b)+"]"),!d&&e?a.add(f.name,f.value):(c?$.isArray(f):isObject(f))?serialize(a,f,c,b):a.add(b,f)})}var jsonpID=0,isObject=$.isObject,document=window.document,key,name,rscript=/)<[^<]*)*<\/script>/gi,scriptTypeRE=/^(?:text|application)\/javascript/i,xmlTypeRE=/^(?:text|application)\/xml/i,jsonType="application/json",htmlType="text/html",blankRE=/^\s*$/;$.active=0,$.ajaxJSONP=function(a){var b="jsonp"+ ++jsonpID,c=document.createElement("script"),d=function(){$(c).remove(),b in window&&(window[b]=empty),ajaxComplete("abort",e,a)},e={abort:d},f;return a.error&&(c.onerror=function(){e.abort(),a.error()}),window[b]=function(d){clearTimeout(f),$(c).remove(),delete window[b],ajaxSuccess(d,e,a)},serializeData(a),c.src=a.url.replace(/=\?/,"="+b),$("head").append(c),a.timeout>0&&(f=setTimeout(function(){e.abort(),ajaxComplete("timeout",e,a)},a.timeout)),e},$.ajaxSettings={type:"GET",beforeSend:empty,success:empty,error:empty,complete:empty,context:null,global:!0,xhr:function(){return new window.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript",json:jsonType,xml:"application/xml, text/xml",html:htmlType,text:"text/plain"},crossDomain:!1,timeout:0},$.ajax=function(options){var settings=$.extend({},options||{});for(key in $.ajaxSettings)settings[key]===undefined&&(settings[key]=$.ajaxSettings[key]);ajaxStart(settings),settings.crossDomain||(settings.crossDomain=/^([\w-]+:)?\/\/([^\/]+)/.test(settings.url)&&RegExp.$2!=window.location.host);var dataType=settings.dataType,hasPlaceholder=/=\?/.test(settings.url);if(dataType=="jsonp"||hasPlaceholder)return hasPlaceholder||(settings.url=appendQuery(settings.url,"callback=?")),$.ajaxJSONP(settings);settings.url||(settings.url=window.location.toString()),serializeData(settings);var mime=settings.accepts[dataType],baseHeaders={},protocol=/^([\w-]+:)\/\//.test(settings.url)?RegExp.$1:window.location.protocol,xhr=$.ajaxSettings.xhr(),abortTimeout;settings.crossDomain||(baseHeaders["X-Requested-With"]="XMLHttpRequest"),mime&&(baseHeaders.Accept=mime,mime.indexOf(",")>-1&&(mime=mime.split(",",2)[0]),xhr.overrideMimeType&&xhr.overrideMimeType(mime));if(settings.contentType||settings.data&&settings.type.toUpperCase()!="GET")baseHeaders["Content-Type"]=settings.contentType||"application/x-www-form-urlencoded";settings.headers=$.extend(baseHeaders,settings.headers||{}),xhr.onreadystatechange=function(){if(xhr.readyState==4){clearTimeout(abortTimeout);var result,error=!1;if(xhr.status>=200&&xhr.status<300||xhr.status==304||xhr.status==0&&protocol=="file:"){dataType=dataType||mimeToDataType(xhr.getResponseHeader("content-type")),result=xhr.responseText;try{dataType=="script"?(1,eval)(result):dataType=="xml"?result=xhr.responseXML:dataType=="json"&&(result=blankRE.test(result)?null:JSON.parse(result))}catch(e){error=e}error?ajaxError(error,"parsererror",xhr,settings):ajaxSuccess(result,xhr,settings)}else ajaxError(null,"error",xhr,settings)}};var async="async"in settings?settings.async:!0;xhr.open(settings.type,settings.url,async);for(name in settings.headers)xhr.setRequestHeader(name,settings.headers[name]);return ajaxBeforeSend(xhr,settings)===!1?(xhr.abort(),!1):(settings.timeout>0&&(abortTimeout=setTimeout(function(){xhr.onreadystatechange=empty,xhr.abort(),ajaxError(null,"timeout",xhr,settings)},settings.timeout)),xhr.send(settings.data?settings.data:null),xhr)},$.get=function(a,b){return $.ajax({url:a,success:b})},$.post=function(a,b,c,d){return $.isFunction(b)&&(d=d||c,c=b,b=null),$.ajax({type:"POST",url:a,data:b,success:c,dataType:d})},$.getJSON=function(a,b){return $.ajax({url:a,success:b,dataType:"json"})},$.fn.load=function(a,b){if(!this.length)return this;var c=this,d=a.split(/\s/),e;return d.length>1&&(a=d[0],e=d[1]),$.get(a,function(a){c.html(e?$(document.createElement("div")).html(a.replace(rscript,"")).find(e).html():a),b&&b.call(c)}),this};var escape=encodeURIComponent;$.param=function(a,b){var c=[];return c.add=function(a,b){this.push(escape(a)+"="+escape(b))},serialize(c,a,b),c.join("&").replace("%20","+")}}(Zepto),function(a){a.fn.serializeArray=function(){var b=[],c;return a(Array.prototype.slice.call(this.get(0).elements)).each(function(){c=a(this);var d=c.attr("type");this.nodeName.toLowerCase()!="fieldset"&&!this.disabled&&d!="submit"&&d!="reset"&&d!="button"&&(d!="radio"&&d!="checkbox"||this.checked)&&b.push({name:c.attr("name"),value:c.val()})}),b},a.fn.serialize=function(){var a=[];return this.serializeArray().forEach(function(b){a.push(encodeURIComponent(b.name)+"="+encodeURIComponent(b.value))}),a.join("&")},a.fn.submit=function(b){if(b)this.bind("submit",b);else if(this.length){var c=a.Event("submit");this.eq(0).trigger(c),c.defaultPrevented||this.get(0).submit()}return this}}(Zepto),function(a){function d(a){return"tagName"in a?a:a.parentNode}function e(a,b,c,d){var e=Math.abs(a-b),f=Math.abs(c-d);return e>=f?a-b>0?"Left":"Right":c-d>0?"Up":"Down"}function h(){g=null,b.last&&(b.el.trigger("longTap"),b={})}function i(){g&&clearTimeout(g),g=null}var b={},c,f=750,g;a(document).ready(function(){var j,k;a(document.body).bind("touchstart",function(e){j=Date.now(),k=j-(b.last||j),b.el=a(d(e.touches[0].target)),c&&clearTimeout(c),b.x1=e.touches[0].pageX,b.y1=e.touches[0].pageY,k>0&&k<=250&&(b.isDoubleTap=!0),b.last=j,g=setTimeout(h,f)}).bind("touchmove",function(a){i(),b.x2=a.touches[0].pageX,b.y2=a.touches[0].pageY}).bind("touchend",function(a){i(),b.isDoubleTap?(b.el.trigger("doubleTap"),b={}):b.x2&&Math.abs(b.x1-b.x2)>30||b.y2&&Math.abs(b.y1-b.y2)>30?(b.el.trigger("swipe")&&b.el.trigger("swipe"+e(b.x1,b.x2,b.y1,b.y2)),b={}):"last"in b&&(b.el.trigger("tap"),c=setTimeout(function(){c=null,b.el.trigger("singleTap"),b={}},250))}).bind("touchcancel",function(){c&&clearTimeout(c),g&&clearTimeout(g),g=c=null,b={}})}),["swipe","swipeLeft","swipeRight","swipeUp","swipeDown","doubleTap","tap","singleTap","longTap"].forEach(function(b){a.fn[b]=function(a){return this.bind(b,a)}})}(Zepto); \ No newline at end of file diff --git a/iris-example/src/main/webapp/lang/en-us.js b/iris-example/src/main/webapp/lang/en-us.js deleted file mode 100644 index 4eb65f9..0000000 --- a/iris-example/src/main/webapp/lang/en-us.js +++ /dev/null @@ -1,13 +0,0 @@ -{ -"APP_NAME" : "Iris Example" -,"WELCOME" : "Welcome to Iris! :)" -,"GOTO_SCREEN" : "Ir a otra pantalla" -,"BACK" : "Volver" -,"BOOK" : { - "LIST" : "Book List" - ,"EDIT" : "Edit book" - ,"ADMIN" : { - "STORE" : "Book Admin Store" - } -} -} \ No newline at end of file diff --git a/iris-example/src/main/webapp/lang/es-es.js b/iris-example/src/main/webapp/lang/es-es.js deleted file mode 100644 index 80e07b4..0000000 --- a/iris-example/src/main/webapp/lang/es-es.js +++ /dev/null @@ -1,13 +0,0 @@ -{ -"APP_NAME" : "Iris Example" -,"WELCOME" : "Welcome to Iris! :)" -,"GOTO_SCREEN" : "Ir a otra pantalla" -,"BACK" : "Volver" -,"BOOK" : { - "LIST" : "Book List" - ,"EDIT" : "Edit book" - ,"ADMIN" : { - "STORE" : "Administración de tienda de libros" - } -} -} \ No newline at end of file diff --git a/iris-example/src/main/webapp/library.html b/iris-example/src/main/webapp/library.html deleted file mode 100644 index 2a60ce1..0000000 --- a/iris-example/src/main/webapp/library.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - iris example - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/iris-example/src/main/webapp/library/boot.js b/iris-example/src/main/webapp/library/boot.js deleted file mode 100644 index 8d7f28d..0000000 --- a/iris-example/src/main/webapp/library/boot.js +++ /dev/null @@ -1,24 +0,0 @@ -iris.config.Load({ - "environment-default" : "dev" - ,"environments-nocache" : "dev" - ,"environment": { - "localhost" : "dev" - } - ,"log": { - "dev": "debug,warning,error" - } -}); - -$(document).ready( - function () { - iris.event.Subscribe(iris.event.BEFORE_NAVIGATION, _OnBeforeNav); - - iris.lang.LoadFrom("es-es", "lang/es-es.js") - - iris.screen.WelcomeScreen("library/screen/main.js"); - } -); - -function _OnBeforeNav () { - console.log("[iris.event.BEFORE_NAVIGATION]", document.location.hash) -} \ No newline at end of file diff --git a/iris-example/src/main/webapp/library/screen/author_details.html b/iris-example/src/main/webapp/library/screen/author_details.html deleted file mode 100644 index 52c3c96..0000000 --- a/iris-example/src/main/webapp/library/screen/author_details.html +++ /dev/null @@ -1,4 +0,0 @@ -
-

Author edit -> Details

- Author's book -
\ No newline at end of file diff --git a/iris-example/src/main/webapp/library/screen/author_details.js b/iris-example/src/main/webapp/library/screen/author_details.js deleted file mode 100644 index 20d5cc4..0000000 --- a/iris-example/src/main/webapp/library/screen/author_details.js +++ /dev/null @@ -1,16 +0,0 @@ -iris.Screen( - function (self) { - - self.Create = function () { - self.Template("library/screen/author_details.html"); - } - - self.Awake = function (p_params) { - iris.D("AWAKE AUTHOR DETAILS", p_params) - } - - self.Sleep = function () { - iris.D("SLEEP AUTHOR DETAILS") - } - } -); diff --git a/iris-example/src/main/webapp/library/screen/author_edit.html b/iris-example/src/main/webapp/library/screen/author_edit.html deleted file mode 100644 index d5557d3..0000000 --- a/iris-example/src/main/webapp/library/screen/author_edit.html +++ /dev/null @@ -1,9 +0,0 @@ -
-

Author edit

- - - - - Show details -
-
\ No newline at end of file diff --git a/iris-example/src/main/webapp/library/screen/author_edit.js b/iris-example/src/main/webapp/library/screen/author_edit.js deleted file mode 100644 index 0139f08..0000000 --- a/iris-example/src/main/webapp/library/screen/author_edit.js +++ /dev/null @@ -1,28 +0,0 @@ -iris.Screen( - function (self) { - - var _$Title - , _$Author - ; - - self.Create = function () { - self.Template("library/screen/author_edit.html"); - - _$Title = self.$Get("title") - _$Author = self.$Get("author") - - self.AddScreen("details", "#authors/edit/details", "library/screen/author_details.js"); - } - - self.Awake = function (p_params) { - iris.D("AWAKE AUTHOR EDIT", p_params) - - _$Title.val(p_params["t"]) - _$Author.val(p_params["a"]) - } - - self.Sleep = function () { - iris.D("SLEEP AUTHOR EDIT") - } - } -); diff --git a/iris-example/src/main/webapp/library/screen/authors.html b/iris-example/src/main/webapp/library/screen/authors.html deleted file mode 100644 index e646dbc..0000000 --- a/iris-example/src/main/webapp/library/screen/authors.html +++ /dev/null @@ -1,10 +0,0 @@ -
-

Author list

- - Can sleep: - -
- -
- -
\ No newline at end of file diff --git a/iris-example/src/main/webapp/library/screen/authors.js b/iris-example/src/main/webapp/library/screen/authors.js deleted file mode 100644 index 2168d0a..0000000 --- a/iris-example/src/main/webapp/library/screen/authors.js +++ /dev/null @@ -1,39 +0,0 @@ -iris.Screen( - function (self) { - - var _$CanSleep; - - self.Create = function () { - self.Template("library/screen/authors.html"); - - self.InstanceUI("btn_edit", "example/ui/button.js", {"onClick" : _GotoEdit}); - - self.AddScreen("edit", "#authors/edit", "library/screen/author_edit.js"); - - _$CanSleep = self.$Get("input_cansleep"); - } - - self.Awake = function () { - iris.D("AWAKE AUTHOR LIST") - } - - self.Sleep = function () { - iris.D("SLEEP AUTHOR LIST") - } - - self.CanSleep = function () { - var canSleep = _$CanSleep.is(':checked'); - - if ( !canSleep ) { - alert("Author list cannot be sleeping") - } - - return canSleep; - } - - function _GotoEdit () { - iris.Goto("#authors/edit?t=Title&a=Author") - } - - } -); diff --git a/iris-example/src/main/webapp/library/screen/book_details.html b/iris-example/src/main/webapp/library/screen/book_details.html deleted file mode 100644 index d4f6108..0000000 --- a/iris-example/src/main/webapp/library/screen/book_details.html +++ /dev/null @@ -1,4 +0,0 @@ -
-

Book edit -> Details

- -
\ No newline at end of file diff --git a/iris-example/src/main/webapp/library/screen/book_details.js b/iris-example/src/main/webapp/library/screen/book_details.js deleted file mode 100644 index 02cc87e..0000000 --- a/iris-example/src/main/webapp/library/screen/book_details.js +++ /dev/null @@ -1,16 +0,0 @@ -iris.Screen( - function (self) { - - self.Create = function () { - self.Template("library/screen/book_details.html"); - } - - self.Awake = function (p_params) { - iris.D("AWAKE BOOK DETAILS", p_params) - } - - self.Sleep = function () { - iris.D("SLEEP BOOK DETAILS") - } - } -); diff --git a/iris-example/src/main/webapp/library/screen/book_edit.html b/iris-example/src/main/webapp/library/screen/book_edit.html deleted file mode 100644 index 7eb7696..0000000 --- a/iris-example/src/main/webapp/library/screen/book_edit.html +++ /dev/null @@ -1,9 +0,0 @@ -
-

Book edit

- - - - - Show details -
-
\ No newline at end of file diff --git a/iris-example/src/main/webapp/library/screen/book_edit.js b/iris-example/src/main/webapp/library/screen/book_edit.js deleted file mode 100644 index 8580a09..0000000 --- a/iris-example/src/main/webapp/library/screen/book_edit.js +++ /dev/null @@ -1,28 +0,0 @@ -iris.Screen( - function (self) { - - var _$Title - , _$Author - ; - - self.Create = function () { - self.Template("library/screen/book_edit.html"); - - _$Title = self.$Get("title") - _$Author = self.$Get("author") - - self.AddScreen("details", "#books/edit/details", "library/screen/book_details.js"); - } - - self.Awake = function (p_params) { - iris.D("AWAKE BOOK EDIT", p_params) - - _$Title.val(p_params["t"]) - _$Author.val(p_params["a"]) - } - - self.Sleep = function () { - iris.D("SLEEP BOOK EDIT") - } - } -); diff --git a/iris-example/src/main/webapp/library/screen/books.html b/iris-example/src/main/webapp/library/screen/books.html deleted file mode 100644 index d3968d0..0000000 --- a/iris-example/src/main/webapp/library/screen/books.html +++ /dev/null @@ -1,7 +0,0 @@ -
-

@@BOOK.LIST@@

- -
- -
-
\ No newline at end of file diff --git a/iris-example/src/main/webapp/library/screen/books.js b/iris-example/src/main/webapp/library/screen/books.js deleted file mode 100644 index 48363d9..0000000 --- a/iris-example/src/main/webapp/library/screen/books.js +++ /dev/null @@ -1,32 +0,0 @@ -iris.Screen( - function (self) { - - self.Create = function () { - self.Template("library/screen/books.html"); - - var $btnEdit = self.$Get("btn_edit"); - $btnEdit.click(_GotoEdit) - - var btnEdit = self.InstanceUI("btn_edit", "example/ui/button.js", {"onClick" : _GotoEdit}); - - self.AddScreen("screens", "#books/edit", "library/screen/book_edit.js"); - - if ( document.location.hash == "#books" ) { - iris.Goto("#books/edit"); - } - } - - self.Awake = function () { - iris.D("AWAKE BOOK LIST") - } - - self.Sleep = function () { - iris.D("SLEEP BOOK LIST") - } - - function _GotoEdit () { - iris.Goto("#books/edit?t=Title&a=Author") - } - - } -); diff --git a/iris-example/src/main/webapp/library/screen/main.html b/iris-example/src/main/webapp/library/screen/main.html deleted file mode 100644 index 9102082..0000000 --- a/iris-example/src/main/webapp/library/screen/main.html +++ /dev/null @@ -1,13 +0,0 @@ -
-

Library

- -

- Book List -

- -

- Author List -

- -
-
diff --git a/iris-example/src/main/webapp/library/screen/main.js b/iris-example/src/main/webapp/library/screen/main.js deleted file mode 100644 index 4d95f45..0000000 --- a/iris-example/src/main/webapp/library/screen/main.js +++ /dev/null @@ -1,14 +0,0 @@ -iris.Screen(function(self) { - - self.Create = function() { - self.Template("library/screen/main.html"); - - self.AddScreen("screens", "#books", "library/screen/books.js"); - self.AddScreen("screens", "#authors", "library/screen/authors.js"); - - if ( !document.location.hash ) { - iris.Goto("#books"); - } - } - -}); diff --git a/iris-example/src/main/webapp/memory-leak-test/memoryleak.js b/iris-example/src/main/webapp/memory-leak-test/memoryleak.js deleted file mode 100644 index 9f13810..0000000 --- a/iris-example/src/main/webapp/memory-leak-test/memoryleak.js +++ /dev/null @@ -1,16 +0,0 @@ -iris.config.Load({ - "environment-default" : "dev" - ,"environments-nocache" : "dev" - ,"environment": { - "localhost" : "dev" - } - ,"log": { - "dev": "debug,warning,error" - } -}); - -$(document).ready( - function () { - iris.screen.WelcomeScreen("memory-leak-test/screen/main.js"); - } -); diff --git a/iris-example/src/main/webapp/memory-leak-test/screen/main.html b/iris-example/src/main/webapp/memory-leak-test/screen/main.html deleted file mode 100644 index 6f72c67..0000000 --- a/iris-example/src/main/webapp/memory-leak-test/screen/main.html +++ /dev/null @@ -1,17 +0,0 @@ -
-

Memory leak

- -

UI Maker

-
    - - - - -
    - -

    Screen Maker

    - - - -
    -
    \ No newline at end of file diff --git a/iris-example/src/main/webapp/memory-leak-test/screen/main.js b/iris-example/src/main/webapp/memory-leak-test/screen/main.js deleted file mode 100644 index 025e55a..0000000 --- a/iris-example/src/main/webapp/memory-leak-test/screen/main.js +++ /dev/null @@ -1,92 +0,0 @@ -iris.Screen(function(self) { - - var _$InputMaxUIs - , _$InputMaxScreens - , _ScreenCount - , _ScreenInterval - , _$UIResults - ; - - self.Create = function() { - self.Template("memory-leak-test/screen/main.html"); - - self.$Get("btn_create_uis").click(_CreateUIs); - self.$Get("btn_destroy_all_uis").click(_DestroyAllUIs); - - self.$Get("btn_create_screens").click(_CreateScreens); - self.$Get("btn_destroy_all_screens").click(_DestroyAllScreens); - - self.$Get("btn_run_ui_tests").click(_RunUITests); - _$UIResults = self.$Get("ui_results"); - - _$InputMaxUIs = self.$Get("ui_max"); - _$InputMaxScreens = self.$Get("screen_max"); - } - - - function _CreateUIs() { - var init = new Date().getTime(); - var num_uis = _$InputMaxUIs.val(); - - for(var f=0, num_uis; fCreating " + num_uis + " UIs ... " + total + " ms (" + avg + " ms/object)"); - } - - function _DestroyAllUIs() { - var init = new Date().getTime(); - - self.DestroyAllUIs("uis"); - - _$UIResults.append("
  • Destroying UIs ..." + (new Date().getTime() - init) + " ms
  • "); - } - - function _RunUITests () { - for ( var i=0; i<10; i++) { - _CreateUIs(); - } - _DestroyAllUIs(); - } - - - function _CreateScreens() { - var init = new Date().getTime(); - console.log("Creating screens and navigating..."); - - _ScreenCount = _$InputMaxScreens.val(); - - var f = 0, id; - _ScreenInterval = setInterval(function(){ - if ( f == _ScreenCount ) { - clearInterval(_ScreenInterval); - } - else { - id = "#screen_" + f++; - self.AddScreen("screens", id, "example/screen/example_instance.js"); - iris.Goto(id); - - iris.D(" Added screen=",id) - } - },500); - - console.log(" Finished at " + (new Date().getTime() - init) + " ms"); - } - - function _DestroyAllScreens() { - _ScreenInterval = setInterval(function(){ - if ( _ScreenCount-- == 0 ) { - clearInterval(_ScreenInterval); - } - else { - var id = "#screen_" + _ScreenCount; - iris.screen.Destroy(id); - iris.D(" Removed screen=",id) - } - },500); - } -}); \ No newline at end of file diff --git a/iris-example/src/main/webapp/memoryleak.html b/iris-example/src/main/webapp/memoryleak.html deleted file mode 100644 index 57c5bce..0000000 --- a/iris-example/src/main/webapp/memoryleak.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - Iris Memory Leak Test - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/iris-example/src/main/webapp/memoryleak_prototype.html b/iris-example/src/main/webapp/memoryleak_prototype.html deleted file mode 100644 index de4a29f..0000000 --- a/iris-example/src/main/webapp/memoryleak_prototype.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - Iris Memory Leak Test - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/iris-example/src/main/webapp/memoryleak_zepto.html b/iris-example/src/main/webapp/memoryleak_zepto.html deleted file mode 100644 index cb6bba8..0000000 --- a/iris-example/src/main/webapp/memoryleak_zepto.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - Iris Memory Leak Test - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/iris-example/src/main/webapp/pix/checkbox.png b/iris-example/src/main/webapp/pix/checkbox.png deleted file mode 100644 index 55c31b91b794ac0c5e2175c03f7e85e6e225a377..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2465 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 - * All rights reserved. - * - * BSD License - * - * 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. - * 3. Neither the name of copyright holders nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "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 COPYRIGHT HOLDERS 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. - * - * Download: http://intelygenz.github.com/iris/ - * - * Creation date: 2012-01-12 - * - * [version] date -> authors - * upd|fix|new|dep|rmv - description - * - * [0.4.2] 2012-09-04 -> alejandro.gonzalez@intelygenz.com, angel.sanchez@intelygenz.com - * [upd] _LocaleParse -> Now can finds variables with dot notation, eg: @@COMMON.HELLO@@. This mean that you can have nested objects in lang json files. - * [new] iris.AddOn, iris.ApplyAddOn -> Now you can define groups of UIs and extends a UI functionality - * [new] screen.CanSleep -> All screens can define a CanSleep public method that returns a boolean indicating when the screen can be leaved or not. - * If only one screen can't sleep, sleep action is cancelled. - * [upd] iris.InstanceUI -> Now displays in console when data-id is not unique. - * [new] self.DestroyUI() -> Remove a UI from the DOM tree and all its references. - * [new] self.DestroyAllUIs() -> Remove all UIs from a container. - * [new] self.Destroy() -> new Lifecycle function is called when a UI is destroyed. - * [new] self.$Get() -> shows error message when element isn't found - * [new] iris.screen.Destroy() -> Remove a created screen completely - * [rmv] iris.screen.Add() -> Now you can use self.AddScreen() - * [new] _AbstractScreen.AddScreen() -> Screens only can be registered inside of screens - * [new] iris.screen.WelcomeScreen() -> Now the applications must implement this entry point - * [rmv] The last parameter of self.InstanceUI(p_id,p_js,p_settings,p_$tmpl) -> you can't instance UI outside its own templates - * [rmv] The last parameter of self.$Get(p_id,p_$tmpl) -> you can't get elements outside its own templates - * [fix] Small code refactoring and fixed bugs. - * [new] Tested with JQuery 1.8 - * [doc] Documentation completed. - * - * [0.4.0] 2012-07-18 -> angel.sanchez@intelygenz.com, alejandro.gonzalez@intelygenz.com - * Previous project: http://code.google.com/p/iris-js/ - * WARNING: No backward with previous versions - * - */ - -/** - * @namespace - * This JavaScript library provides different client-side optimization techniques for front construction. - * It is independent and compatible with any server-side technology: JAVA, PHP, Python, GOOGLE APP ENGINE, .NET... - * - * */ -var iris = new function() { - - var _APP_VERSION = "0.4.2-SNAPSHOT" - , _APP_NAME = "iris" - , _JQ_MIN_VER = 1.5 - ; - - var _Env = null - , _Log = {"error":true} - , _LogPrefix = "" - , _Screen = {} - , _ScreenUrl = {} - , _Context = {} - , _LastScreen = {} - , _PrevHashUrl = "" - , _Global = {} - , _Local = {} - , _Locale = null - , _Config = {} - , _Lang = {} - , _Event = {} - , _Includes = {} - , _Components = {} - , _AddOns = {} - , _AppBaseUri = "" - , _LastIncludePath - , _Head = $("head").get(0) - , _Cache = true - , _HasConsole - , _GotoCancelled = false - ; - - function _Init () { - $(window).bind("hashchange", _Window_OnHashChange); - - if( typeof jQuery === "undefined" ) { - _E( "jQuery " + _JQ_MIN_VER + "+ previous load required" ); - } - else if ( $().jquery < _JQ_MIN_VER ) { - _E( "jQuery " + $().jquery + " currently loaded, jQuery " + _JQ_MIN_VER + "+ required" ); - } - - _HasConsole = (window.console && window.console.debug && window.console.warn && window.console.error); - if ( !_HasConsole && window.console && window.console.log ) { - window.console.log("advanced console debugging is not supported in this browser"); - } - } - - function _Window_OnHashChange () { - - if ( _GotoCancelled ) { - _GotoCancelled = false; - return false; - } - - var prev = _PrevHashUrl.split("/") - , curr = document.location.hash.split("/") - , prevPath = "" - , currPath = "" - , pathWithoutParams - , hasRemainingChilds = false - ; - - // Check if all screen.canSleep() are true - if ( _PrevHashUrl != "" ) { - for ( var f=0, F=prev.length; f curr.length ) { - - for ( var f=0, F=prev.length; f -1 ) { - var link = document.createElement('link'); - link.rel = 'stylesheet'; - link.type = 'text/css'; - link.href = fileUrl; - _Head.appendChild(link); - } - else { - _LastIncludePath = p_uiFile; - var isHtml = p_uiFile.lastIndexOf(".html") > -1; - _AjaxSync( - fileUrl - , isHtml ? "html" : "text" - , function (p_data) { - if ( isHtml ) { - _IncludeHtml(p_data, p_uiFile); - } - else { - _IncludeJs(p_data); - } - } - , function (p_err) { - delete _Includes[fileUrl]; - _E(p_err.status, "Error loading file", fileUrl); - } - ); - } - } - } - - function _IncludeHtml ( p_html, p_uiFile ) { - _Includes[p_uiFile] = _LocaleParse(p_html); - } - - function _IncludeJs ( p_js ) { - var script = document.createElement("script"); - script.language = "javascript"; - script.type = "text/javascript"; - script.text = p_js; - _Head.appendChild(script); - } - - function _IncludeFiles () { - for ( var f=0,F=arguments.length; f -1 ) { - _Env = _Config["environment"][p]; - break; - } - } - if ( !_Env ) { - _Env = "pro"; - } - _LogPrefix = "[" + _Env + "]"; - } - return _Env; - } - }; - - function _AjaxSync (p_uri, p_dataType, f_success, f_error) { - $.ajax( - { url: p_uri - , dataType: p_dataType - , async: false - , cache: _Cache - , success : f_success - , error : f_error - } - ); - } - - function _GlobalLoad(p_hash){ - $.extend(_Global, p_hash); - return _Global; - }; - - function _GlobalData (p_label, p_value){ - if ( p_label && p_value !== undefined ) { - _Global[p_label] = p_value; - } - else if ( p_label ) { - return _Global[p_label]; - } - else { - return _Global; - } - }; - - function _LocalLoad(p_hash){ - $.extend(_Local, p_hash); - return _Local; - }; - - function _LocalData(p_label, p_value){ - if ( p_label && p_value !== undefined ) { - _Local[p_label][_GetEnv()] = p_value; - } - else if ( p_label ) { - return _Local[p_label][_GetEnv()]; - } - else { - return _Local; - } - }; - - function _Find(p_eventName, f_func){ - var events = _Event[p_eventName]; - if ( events ) { - for ( var f=0, F=events.length; f 0 ? base[0].attributes["href"].value : "/"; - _AppBaseUri = document.location.protocol + "//" + document.location.host + base; - } - return _AppBaseUri; - }; - - function _Ajax (p_settings) { - return $.ajax(p_settings); - } - - function _LocaleLoad(p_locale, p_data){ - _D("[iris.lang.Load]", p_locale, p_data); - - if ( _Locale === null ) { - _Locale = p_locale; - } - - if ( !_Lang.hasOwnProperty(_Locale) ) { - _Lang[_Locale] = {}; - } - - $.extend(_Lang[_Locale], p_data); - }; - - function _LangGet (p_label, p_locale) { - var locale = ( p_locale ) ? p_locale : _Locale; - var value = null; - if ( p_label.indexOf(".") > -1 ){ - var labels = p_label.split("."); - var f,F=labels.length; - var obj = _Lang[locale]; - for(f = 0; f= 0) ? settings["formatPos"] : settings["formatNeg"]; - - var decimal = val % 1; - var num = String( Math.abs(val-decimal) ); - - decimal = String(Math.abs(decimal).toFixed(settings["precision"])) - decimal = decimal.substr(2); - - for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) { - num = num.substring(0, num.length - (4 * i + 3)) + settings["thousand"] + num.substring(num.length - (4 * i + 3)); - } - - return format.replace("n", num + settings["decimal"] + decimal ); - } - - function _DateFormat (p_date, p_format) { - if ( !p_format ) { - p_format = _Regional[_Locale]["dateFormat"]; - } - - if ( typeof p_date !== "object" ) { - p_date = new Date(Number(p_date)) - } - - var dateFormat = ""; - for (var f=0, F=p_format.length; f 12) ? "p.m." : "a.m."; - case "A": - return (p_date.getHours() > 12) ? "PM" : "AM"; - case "U": - return Math.floor(p_date.getTime() * 0.001); - default: - return p_formatChar; - } - } - - var _Regional = { - "en-US" : { - dayNames : ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"] - ,monthNames : ["January","February","March","April","May","June","July","August","September","October","November","December"] - ,dateFormat : "m/d/Y h:i:s" - ,currency : { - formatPos : "$ n" - ,formatNeg : "($ n)" - ,decimal : "." - ,thousand : "," - ,precision : 2 - } - } - ,"es-ES" : { - dayNames : ["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"] - ,monthNames : ["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"] - ,dateFormat : "d/m/Y H:i:s" - ,currency : { - formatPos : "n €" - ,formatNeg : "-n €" - ,decimal : "," - ,thousand : "." - ,precision : 2 - } - } - }; - - /** - * @class - * Provide mechanism to store and retrieve settings values. - */ - function _Settable () { - - this.__Setting__ = null; - - /** - * Set multiple component settings. - * You can access to this values using {@link iris-_Settable#Setting}. - * @function - * @example - * - * self.Settings({ - * "min" : 0 - * ,"label" : "example" - * }); - */ - this.Settings = function (p_settings) { - $.extend(this.__Setting__, p_settings); - }; - - /** - * Set or get a single component setting. - * @function - * @example - * - * var label = self.Setting("label"); // Get setting value - * - * self.Setting("label", "example"); // Set setting value - */ - this.Setting = function (p_label, p_value) { - if ( p_value === undefined ) { - if ( !this.__Setting__.hasOwnProperty(p_label) ) { - iris.W("The setting ", p_label, " is not in ", this.__Setting__, this); - } - return this.__Setting__[p_label]; - } - else { - this.__Setting__[p_label] = p_value; - } - }; - }; - - /** - * @class - * Abstract component for UIs / Screens extending. - * Common properties and functions. - */ - function _AbstractComponent () { - this.TEMPLATE_APPEND = "append"; - this.TEMPLATE_REPLACE = "replace"; - - this.__$Tmpl__ = null; - this.__Id__ = null; - this.__UIComponents__ = null; - this.__$Container__ = null; - - this.__IsSleeping__; - - this.__Sleep__ = function () { - for ( var f=0, F=this.__UIComponents__.length; f < F; f++ ) { - this.__UIComponents__[f].__Sleep__(); - } - this.__IsSleeping__ = true; - this.Sleep(); - }; - - this.__Awake__ = function (p_params) { - for ( var f=0, F=this.__UIComponents__.length; f < F; f++ ) { - this.__UIComponents__[f].__Awake__(); - } - this.__IsSleeping__ = false; - this.Awake(p_params); - }; - - this.__Destroy__ = function () { - if ( !this.__IsSleeping__ ) { - this.__Sleep__(); - } - - for ( var f=0, F=this.__UIComponents__.length; f < F; f++ ) { - this.__UIComponents__[f].__Destroy__(); - } - this.__UIComponents__ = null; - this.Destroy(); - }; - - this.__Template__ = function (p_htmlUrl, p_params, p_mode) { - - if ( typeof p_htmlUrl == "undefined" ) { - this.__$Tmpl__ = this.__$Container__; - return this.__$Tmpl__; - } - - iris.Include(p_htmlUrl); - - var tmplHtml = p_params ? _TemplateParse(_Includes[p_htmlUrl], p_params) : _Includes[p_htmlUrl]; - var $tmpl = $(tmplHtml); - - this.__$Tmpl__ = $tmpl; - if ( $tmpl.size() > 1 ) { - iris.E("Template must have only one root node", p_htmlUrl, _Includes[p_htmlUrl], $tmpl); - } - - switch ( p_mode ) { - case this.TEMPLATE_APPEND: - this.__$Container__.append($tmpl); - break; - case this.TEMPLATE_REPLACE: - this.__$Container__.replaceWith($tmpl); - break; - default: - iris.E("Unknown template mode", p_mode); - } - - }; - - /** - * Show the template object. - * If the component is a screen, this is called automatically - * after self.Awake() when iris navigates. - * - * See {@link iris.Goto} for more details. - * @function - */ - this.Show = function () { - this.__$Tmpl__.show(); - }; - - /** - * Hide the template object. - * If the component is the current screen, this is called automatically - * after self.Sleep() when iris navigates to other screen. Is called too - * when a new screen is created. - * - * See {@link iris.Goto} for more details. - * @function - */ - this.Hide = function () { - this.__$Tmpl__.hide(); - }; - - /** - * Find a JQuery object using its data-id attribute. - * @function - * @param {String} [p_id] Element data-id value, if no set return root element (optional) - * @example - * - * var $label = self.$Get("span_label"); - * - * var rootElement = self.$Get(); - */ - this.$Get = function (p_id) { - if ( p_id ) { - var - id = "[data-id=" + p_id + "]" - , filter = this.__$Tmpl__.filter(id) - ; - - if ( filter.length > 0 ) { - return filter; - } - else { - var find = this.__$Tmpl__.find(id); - if ( find.size() > 0 ) { - return find; - } - else { - iris.E("[$Get] Element not found", p_id, this.__$Tmpl__); - return undefined; - } - } - } - - return this.__$Tmpl__; - }; - - /** - * Create a new UI component instance. - * - * The created component is registered into the parent screen or UI, - * so you must use {@link iris-_AbstractComponent#DestroyUI} in order to remove it. - * - * The component is added to p_id container or replace it. - * See {@link iris-_AbstractUI#TemplateMode} for more details. - * - * @function - * @param {String} p_id Container data-id - * @param {String} p_jsUrl UI file path - * @param {Object} p_uiSettings UI Settings - * @example - * - * self.InstanceUI("custom_ui", "custom_ui.js"); - * - * self.InstanceUI("btn_ok", "button.js", {"label":"OK","ico":"accept"}); - */ - this.InstanceUI = function (p_id, p_jsUrl, p_uiSettings) { - var $container = this.$Get(p_id); - if ( $container.size() == 1 ) { - var uiInstance = _InstanceUI($container, $container.attr("data-id"), p_jsUrl, p_uiSettings); - this.__UIComponents__[this.__UIComponents__.length] = uiInstance; - return uiInstance; - } - else if ( $container.size() > 1 ) { - iris.E("InstanceUI: Container [data-id=" + p_id + "] must be unique"); - } - else { - iris.E("InstanceUI: Container [data-id=" + p_id + "] not found"); - } - }; - - /** - * Remove a child UI component completely previously created using {@link self.InstanceUI}. - * Remove parent references. - * @function - * @param {UI} p_ui UI to be removed - * @example - * - * var customUI = self.InstanceUI("custom_ui", "custom_ui.js"); - * self.DestroyUI(customUI); - */ - this.DestroyUI = function (p_ui) { - for (var f=0, F=this.__UIComponents__.length; f < F; f++) { - if (this.__UIComponents__[f] == p_ui) { - this.__UIComponents__.splice(f, 1); - p_ui.__Destroy__(); - p_ui.$Get().remove(); - break; - } - } - }; - - /** - * Remove all UI components from a container. - * The UIs must be previously created using {@link self.InstanceUI}.
    - * Remove parent references. - * @function - * @param {String|JQuery} p_idOrJq UI Container data-id or JQuery object - * @example - * self.DestroyAllUIs("container"); - * - * self.DestroyAllUIs($container); - */ - this.DestroyAllUIs = function (p_idOrJq) { - var contSelector = typeof p_idOrJq === "string" ? "[data-id=" + p_idOrJq + "]" : p_idOrJq.selector; - var ui; - for (var f=0, F=this.__UIComponents__.length; f < F; f++) { - ui = this.__UIComponents__[f]; - - if (ui.__$Container__.selector == contSelector) { - this.__UIComponents__.splice(f--, 1); - F--; - - ui.__Destroy__(); - ui.$Get().remove(); - } - } - }; - - /** - * Get the component container. - * If the component is a screen, the container is - * set using {@link iris-_AbstractScreen#AddScreen} function. - * Otherwise if the component is a UI, the container is - * set using {@link iris-_AbstractComponent#InstanceUI} function. - * @function - * @example - * - * var screenContainer = self.$Container(); - */ - this.$Container = function () { - return this.__$Container__; - }; - - // To override functions - - /** - * Called automatically only once at the creation phase. - * Function to override. - * @function - */ - this.Create = function () {}; - - /** - * Called automatically when a screen is showed. - * Function to override. - * @function - */ - this.Awake = function () {}; - - /** - * Called automatically when a screen is going to sleep, before {@link iris-_AbstractComponent#Sleep}. - * If return false, the self.Sleep() function is not called. - * @function - */ - this.CanSleep = function () { - return true; - }; - - /** - * Called automatically when a screen is hidden. - * Function to override. - * @function - */ - this.Sleep = function () {}; - - /** - * Called automatically by {@link iris-_AbstractComponent#DestroyUI}. - * Function to override. - */ - this.Destroy = function () {}; - }; - _AbstractComponent.prototype = new _Settable(); - - /** - * @class - * Abstract class for AddOn extending. - * Common AddOn functions and properties. - */ - function _AbstractAddOn () { - this.__Components__; - - /** - * Add a array of UIs to the AddOn. - * It is called automatically from {@link iris.ApplyAddOn}. - * @param p_uis {Array} Array of UIs - * @function - */ - this.AddAll = function (p_uis) { - for (var f=0, F=p_uis.length; fself.TEMPLATE_REPLACE. - * Use this function before call {@link iris-_AbstractUI.Template}. - * @function - * @example - * self.TemplateMode(self.TEMPLATE_APPEND); - * self.Template("tmpl.html"); - */ - this.TemplateMode = function (p_mode) { - this.__TemplateMode__ = p_mode; - }; - - /** - * Create the component template. - * Translate multilanguage values, draw parameters, - * create DOM elements and insert into container or replace it. - * - * See {@link iris-_AbstractUI.TemplateMode}. - * @function - * @example - * self.TemplateMode(self.TEMPLATE_APPEND); - * self.Template("tmpl.html", {"age":23}); - */ - this.Template = function (p_htmlUrl, p_params) { - this.__Template__(p_htmlUrl, p_params, this.__TemplateMode__); - }; - }; - _AbstractUI.prototype = new _AbstractComponent(); - - /** - * @class - * Abstract class for screen extending. - * Common screen functions and properties. - */ - function _AbstractScreen () { - - /** - * Create the screen template. - * Translate multilanguage values, draw parameters, - * create DOM elements and it is insert into the screen container. - * @function - * @example - * self.Template("tmpl.html", {"name":"Jonh"}); - */ - this.Template = function (p_htmlUrl, p_params) { - this.__Template__(p_htmlUrl, p_params, this.TEMPLATE_APPEND); - }; - - /** - * Add a new screen. - * You can navigate to this using iris.Goto. - * See {@link iris.Goto} for more details. - * @function - * @param {JQuery} p_containerId Screen container data-id - * @param {String} p_screenPath Screen URL path - * @param {String} p_jsUrl Screen controller - * @example - * self.AddScreen( - * "screens" - * , "#books/edit" - * , "screen/book_edit.js" - * ); - * - * iris.Goto("#books/edit"); - */ - this.AddScreen = function _ScreenAdd (p_containerId, p_screenPath, p_jsUrl) { - _ScreenUrl[p_screenPath] = p_jsUrl; - _Context[p_screenPath] = this.$Get(p_containerId); - };; - - }; - _AbstractScreen.prototype = new _AbstractComponent(); - - function _Deserialize (p_$form, p_data) { - var element, tag, value; - for ( name in p_data ) { - element = p_$form.find('[name="' + name + '"]'); - if ( element.length > 0 ) { - tag = element[0].tagName.toLowerCase(); - value = p_data[name]; - switch (tag) { - case "select": - case"textarea": - $(element).val(value); - break; - case "input": - switch (tag) { - case "checkbox": - if (value) { - element.attr("checked", "checked"); - } - break; - case "radio": - element.filter('[value="'+value+'"]').attr("checked", "checked"); - break; - default: - element.val(value); - } - } - } - }; - } - - function _Serialize (p_$form) { - var json = {}; - $.map(p_$form.serializeArray(), function(p_obj, p_index){ - json[ p_obj['name'] ] = p_obj['value']; - }); - return json; - } - - - /** @namespace Screen management: Add a new screen, ... */ - this.screen = {}; - - /** @namespace Event management: Add/remove listeners and trigger events. */ - this.event = {}; - - /** @namespace Application configuration: Load configuration data and environments. */ - this.config = {}; - - /** @namespace User interface: Work with HTML elements. */ - this.ui = {}; - - /** @namespace Asynchronous HTTP request and URL base. */ - this.net = {}; - - /** @namespace Global configurations management */ - this.global = {}; - - /** @namespace Environment configurations management */ - this.local = {}; - - /** @namespace Multilanguage : Load translation files, get translated text, ...*/ - this.lang = {}; - - /** @namespace Various utilities: Date formatting, serialization, ... */ - this.util = {}; - - /** - * Load the configuration JSON. - * You can use iris without load this file. - * @function - * @param {JSON} config Contains information about environments, global and environment settings, loglevel logs ... - * @example - * iris.config.Load({ - * "environment-default" : "pro" - *,"environments-nocache" : "dev" - * ,"environment": { - * "localhost" : "dev" - * ,"www.example.com" : "pro" - * } - * ,"log": { - * "dev": "debug,warning,error" - * ,"pro" : "debug,error" - * } - * ,"global": { - * "global-variable" : "example" - * } - * ,"local": { - * "local-variable" : { - * "dev" : "example-dev" - * ,"pro" : "example-pro" - * } - * } - * }); - * - */ - this.config.Load = _ConfigLoad; - - /** - * Set or get the current environment. - * If a configuration file is loaded, iris try set this value using - * the current URL and the defined environments. - * If not match anything use "environment-default" - * The local variables depends of this value. - * @function - * @param {String} [p_env] Environment name (optional) - * @example - * Example: URL=http://localhost:8080/admin - * Configuration file: - * ... - * "environment": { - * "localhost" : "dev" - * ,"www.example.com" : "pro" - * } - * ... - * - * iris.config.Env(); // return "dev" - * - * iris.config.Env("pro"); // set environment to "pro" - */ - this.config.Env = _GetEnv; - - /** - * Add global configuration values​​. - * If you load a configuration file, automatically load the object "global" ({@link iris.config.Load}). - * See {@link iris.global.Data} for more details. - * @function - * @param {Object} p_hash Object like: { "name" : value, ... } - * @example - * iris.global.Load({"global-variable" : "value"}); - * iris.global.Data("global-variable"); // return "value" - */ - this.global.Load = _GlobalLoad; - - /** - * Get or set the value of a global configuration variable. - * If label and value are not specified then return an object with all values. - * See {@link iris.global.Load} for more details. - * @function - * @param {String} [p_label] Variable label (optional) - * @param {String} [p_value] Variable value (optional) - * @example - * iris.global.Data("global-variable"); - */ - this.global.Data = _GlobalData; - - /** - * Add configuration values that depends on current environment. - * If you load a configuration file, automatically load the object "local" ({@link iris.config.Load}). - * See {@link iris.local.Data} for more details. - * @function - * @param {Object} p_hash Object like: { "name" : {"environment" : value, ... }, ... } - * @example - * iris.global.Load({"global-variable" : "value"}); - * iris.global.Data("global-variable"); // return "value" - */ - this.local.Load = _LocalLoad; - - /** - * Get or set the value of a configuration variable that depends on current environment. - * If label and value are not specified then return an object with all values. - * See {@link iris.local.Load} for more details. - * @function - * @param {String} [p_label] Variable label (optional) - * @param {String} [p_value] Variable value (optional) - * @example - * iris.local.Data({ - * "local-variable" : { - * "dev" : "example-dev" - * ,"pro" : "example-pro" - * } - * }); - * - * // If environemnt="dev" then return "example-dev" - * iris.local.Data("local-variable"); - */ - this.local.Data = _LocalData; - - /** - * Add translation texts to a locale. - * See {@link iris.lang.Get} for more details. - * @function - * @param {String} p_locale Locale - * @param {Object} p_data Object like { "LABEL" : "value", GROUP : { "LABEL" : "value", ... }, ... } - * @example - * iris.lang.Load( "es-ES" - * ,{ "LABEL":"etiqueta" - * ,{"GROUP":{ - * "NESTED_VALUE" : "valor anidado" - * } - * }); - * - * iris.lang.Get("LABEL"); - * iris.lang.Get("GROUP.NESTED_VALUE"); - */ - this.lang.Load = _LocaleLoad; - - /** - * Load remote translation texts into a locale. - * @function - * @param {String} p_locale Locale - * @param {String} p_uri URL to load - * @param {Object} p_settings {@code {"success" : function (p_locale) {}, "error" : function (p_locale) {}} } - * @example - * iris.lang.LoadFrom( - * "es-ES" - * , "http://example.com/lang" - * , {"success":_OnLangLoad} - * ); - */ - this.lang.LoadFrom = _LangLoadFrom; - - /** - * Get a translation text according to the Locale. - * You can access to nested values using dot notation. - * See {@link iris.local.Locale} for more details. - * @function - * @param {String} p_label Label - * @param {String} [p_locale] Locale (optional) - * @example - * iris.lang.Get("LABEL"); - * - * iris.lang.Get("LABEL", "en-US"); - * - * iris.lang.Get("GROUP.LABEL"); - */ - this.lang.Get = _LangGet; - - /** - * Set or get the current locale. - * @function - * @param {String} [p_locale] Locale (optional) - * @example - * var locale = iris.lang.Locale(); - * iris.lang.Locale("es-ES"); - */ - this.lang.Locale = _LocaleGet; - - /** - * Safe debug traces. - * @function - * @param {arguments} - * @example - * iris.L("text", variable); - */ - this.L = _L; - - /** - * Safe debug traces. If debug-level is active for the current environment then print traces. - * See {@link iris.config.Load} for more details. - * @function - * @param {arguments} - * @example - * iris.D("text", variable); - */ - this.D = _D; - - /** - * Safe warning traces. If warning-level is active for the current environment then print traces. - * @function - * @see {@link iris.config.Load} - * @param {arguments} - * @example - * iris.W("text", variable); - */ - this.W = _W; - - /** - * Safe error traces. If error-level is active for the current environment then print traces. - * See {@link iris.config.Load} for more details. - * @function - * @param {arguments} - * @example - * iris.E("text", variable); - */ - this.E = _E; - - /** - * Add an event listener. - * See {@link iris.event.Notify} and {@link iris.event.Remove} for more details. - * @function - * @param {String} p_eventName Event identifier - * @param {Function} f_func Event listener - * @example - * iris.event.Subscribe("user_select", _OnUserSelect); - */ - this.event.Subscribe = _EventSubscribe; - - /** - * Trigger an event. - * See {@link iris.event.Subscribe} and {@link iris.event.Remove} for more details. - * @function - * @param {String} p_eventName Event identifier - * @param {Object} p_data Event paramater - * @example - * iris.event.Notify( - * "user_select" - * , {"user_id" : 123, "name" : "John"} - * ); - */ - this.event.Notify = _EventNotify; - - /** - * Remove an event listener. - * See {@link iris.event.Subscribe} and {@link iris.event.Notify} for more details. - * @function - * @param {String} p_eventName Event identifier - * @param {String} f_func Event listener - * @example - * iris.event.Remove("user_select", _OnUserSelect); - */ - this.event.Remove = _EventRemove; - - /** - * Get or set the application base URL. - * Use the <base > HTML tag if are defined. - * @function - * @param {String} [p_baseUri] URL base (optional) - * @example - * // Current URL = http://www.example.com/admin/example/path?a=1 - * iris.net.BaseUri(); // return http://www.example.com/ - */ - this.net.BaseUri = _BaseUri; - - /** - * Do an Ajax request. - * Accepts the same parameters as jQuery.ajax() - * @function - * @see JQuery Ajax. - * @example - * iris.net.Ajax( - * { "url" : "/s/myservice" - * , "type" : "GET" - * } - * ); - */ - this.net.Ajax = _Ajax; - - /** - * Register a Screen object. - * It must appear at the beginning of the screen file. - * @function - * @param {Function} f_screen Screen class - * @example - * iris.Screen( - * function (self) { - * self.Create = function () { - * } - * - * self.Awake = function (p_params) { - * } - * - * self.Sleep = function () { - * } - * } - * ); - */ - this.Screen = _ScreenCreate; - - /** - * Register an UI object. - * It must appear at the beginning of the screen file. - * @function - * @param {Function} f_ui UI class - * @example - * iris.UI( - * function (self) { - * self.Create = function (p_domAttr, p_settings) { - * } - * - * self.Awake = function (p_params) { - * } - * - * self.Sleep = function () { - * } - * } - * ); - */ - this.UI = _UICreate; - - /** - * Set the initial screen. - * This screen is registered as the root screen - * and automatically is shown. - * @param {String} p_jsUrl Screen controller - * @function - * @example - * iris.screen.WelcomeScreen("screen/main.js"); - */ - this.screen.WelcomeScreen = _WelcomeScreen; - - /** - * Destroy a created screen. - * Free screen and its UIs memory. - * Call in cascade all Sleep() and Destroy() functions for its UI childs. - * @function - * @param {String} p_screenPath Screen URL path - * @example - * iris.screen.Destroy("#books/edit"); - */ - this.screen.Destroy = _ScreenDestroy; - - /** - * Copy all data-* attributes to an object. - * Remove the "data-" prefix from attribute names. - * @function - * @param {JQuery} p_$obj Object to merge - * @example - * var $obj = $("<div data-id='test' data-class='myclass'></div>") - * var params = iris.ui.JqToHash($obj); - * // return: {"id" : "test", "class" : "myclass"} - */ - this.ui.JqToHash = _JqToHash; - - /** - * Set the object values to a JQuery object. - * @function - * @param {Object} p_hash Object with source values - * @param {JQuery} p_$obj JQuery object target - * @param {String[]} [p_filter] Indicates that values ​​should be copied (optional) - * @example - * iris.ui.HashToJq( - * { "class":"myclass", "other":"other_value" } - * , $obj - * , ["class"] - * ); // Set the $obj attribute "class" - */ - this.ui.HashToJq = _HashToJq; - - /** - * Include static resources dynamically. - * The load is synchronous and tracks all the files included to prevent them to be included twice.
    - * You can include:
    - *
      - *
    • CSS files: style files are included by creating a link dynamically in the header of the index page.
    • - *
    • JS files: script files are included by creating a script object dynamically in the header of the index page - * and append the loaded content to it. When including javascript files you must take care of the syntax - * as including javascript file with some syntax error would produce an error when adding it to a script element.
    • - *
    - * @function - * @param {arguments} File paths - * @example - * iris.Include("app/service/myservice.js", "app/css/mycss.css"); - */ - this.Include = _IncludeFiles; - - /** - * Formats a Date object or timestamp to the specified format and according to the current locale.
    - * You can use the following special characters:

    - * a 'a.m.' or 'p.m.'
    - * A 'AM' or 'PM'
    - * b Month, textual, 3 letters, lowercase. 'jan'
    - * d Day of the month, 2 digits with leading zeros. '01' to '31'
    - * D Day of the week, textual, 3 letters. 'Fri'
    - * F Month, textual, long. 'January'
    - * h Hour, 12-hour format. '01' to '12'
    - * H Hour, 24-hour format. '00' to '23'
    - * i Minutes. '00' to '59'
    - * l Day of the week, textual, long. 'Friday'
    - * m Month, 2 digits with leading zeros. '01' to '12'
    - * M Month, textual, 3 letters. 'Jan'
    - * n Month without leading zeros. '1' to '12'
    - * s Seconds, 2 digits with leading zeros. '00' to '59'
    - * U Seconds since the Unix Epoch (January 1 1970 00:00:00 UTC)
    - * y Year, 2 digits. '99'
    - * Y Year, 4 digits. '1999'
    - * @function - * @param {Date|Timestamp} p_date Date object or timestamp (UNIX timestamp) - * @param {String} [p_format] Format string (optional) - * @example - * iris.util.DateFormat(new Date(),"ymd"); - * iris.util.DateFormat("1331954654564","d/m/y h:i:s"); // 17/03/12 04:24:14 - * iris.util.DateFormat(1331954654564); - */ - this.util.DateFormat = _DateFormat; - - /** - * Fill all form component with data. - * @function - * @param p_$form {JQuery Object} Form target - * @param p_data {Object} Object data source - * @example - * var data = {"name":"Jonh", "surname": "Doe"}; - * iris.util.Deserialize($form, data); - */ - this.util.Deserialize = _Deserialize; - - /** - * Serialize a form data to Object. - * @function - * @param p_$form - * @example - * var data = iris.util.Serialize($form); - */ - this.util.Serialize = _Serialize; - - /** - * Navigate to a screen. - * The screen must be previously added using {@link iris-_AbstractScreen#AddScreen}.
    - * You can send parameters to the target screen as ... /screen?param1=value1¶m2=value2/ ..., - * remember apply encodeURI() to the parameter values. - * @function - * @param p_hashUri {String} Hash URL - * @example - * - * iris.Goto("#home/section/subsection"); - * - * // Call with screen parameters - * iris.Goto("#home/section?id=5&name=example%20name/subsection"); - * - * // Remember encode param values - * var title = encodeURI("Title Example"); - * iris.Goto("#home/section?title=" + title); - */ - this.Goto = _Goto; - - /** - * Register a AddOn object. - * It must appear at the beginning of the AddOn file. - * @function - * @param {Function} f_addOn AddOn Class - * @example - * iris.AddOn( - * function (self) { - * self.Create = function ( p_uis ) { - * } - * ... - * } - * ); - */ - this.AddOn = _AddOn; - - /** - * Apply a AddOn to a group of UI components or single UI. - * @function - * @param p_id {String} AddOn identifier - * @param p_uis {Object|Array} UI Component/s - * @example - * var customUI = self.InstanceUI("input", "input.js"); - * iris.ApplyBE("validator.js", customUI); - * - * var otherCustomUI = self.InstanceUI("input", "input.js"); - * iris.ApplyAddOn("validator.js", [customUI, otherCustomUI]); - * - */ - this.ApplyAddOn = _ApplyAddOn; - - _Init(); - -}; diff --git a/js/iris-0.4.2.min.js b/js/iris-0.4.2.min.js deleted file mode 100644 index ce0260d..0000000 --- a/js/iris-0.4.2.min.js +++ /dev/null @@ -1,25 +0,0 @@ -var iris=new function(){function N(){if(F)return F=!1;var a=t.split("/"),b=document.location.hash.split("/"),c="",d="",e,j=!1;if(""!=t)for(var f=0,h=a.length;fb.length){f=0;for(h=a.length;fa?"0"+a:a}function fa(a,b){var c=L[m];switch(a){case "y":return String(b.getFullYear()).substring(2);case "Y":return b.getFullYear();case "m":return c=b.getMonth()+1,s(c);case "n":return b.getMonth()+1;case "M":return c[monthNames][b.getMonth()].substring(0,3);case "b":return c[monthNames][b.getMonth()].substring(0,3).toLowerCase();case "F":return c[monthNames][b.getMonth()]; -case "d":return c=b.getDate(),s(c);case "D":return c[dayNames][b.getDay()].substring(0,3);case "l":return c[dayNames][b.getDay()];case "s":return c=b.getSeconds(),s(c);case "i":return c=b.getMinutes(),s(c);case "H":return c=b.getHours(),s(c);case "h":return c=b.getHours(),s(0==c%12?12:c%12);case "a":return 12$().jquery&&p("jQuery "+$().jquery+" currently loaded, jQuery 1.5+ required");q=window.console&&window.console.debug&&window.console.warn&&window.console.error;!q&&(window.console&& -window.console.log)&&window.console.log("advanced console debugging is not supported in this browser")}; \ No newline at end of file diff --git a/js/iris-0.4.3.js b/js/iris-0.4.3.js deleted file mode 100644 index 4d73955..0000000 --- a/js/iris-0.4.3.js +++ /dev/null @@ -1,2022 +0,0 @@ -/* - * Copyright (c) 2012 Intelygenz - * All rights reserved. - * - * BSD License - * - * 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. - * 3. Neither the name of copyright holders nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "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 COPYRIGHT HOLDERS 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. - * - * Download: http://intelygenz.github.com/iris/ - * - * Creation date: 2012-01-12 - * - * [version] date -> authors - * upd|fix|new|dep|rmv - description - * - * [0.4.3] 2012-09-06 -> angel.sanchez@intelygenz.com - * [fix] Screen Context Bug (https://github.com/intelygenz/iris/issues/10) - * [fix] Load Multiple Locales Bug (https://github.com/intelygenz/iris/issues/15) - * [new] Nested properties value in Templates (https://github.com/intelygenz/iris/issues/8) - * [upd] More Descriptive Error Messages (https://github.com/intelygenz/iris/issues/12) - * [new] Specify new Regional configuration (https://github.com/intelygenz/iris/issues/17) - * [doc] Add Screen Paramaters Example (https://github.com/intelygenz/iris/issues/11) - * - * [0.4.2] 2012-09-04 -> alejandro.gonzalez@intelygenz.com, angel.sanchez@intelygenz.com - * [upd] _LocaleParse -> Now can finds variables with dot notation, eg: @@COMMON.HELLO@@. This mean that you can have nested objects in lang json files. - * [new] iris.AddOn, iris.ApplyAddOn -> Now you can define groups of UIs and extends a UI functionality - * [new] screen.CanSleep -> All screens can define a CanSleep public method that returns a boolean indicating when the screen can be leaved or not. - * If only one screen can't sleep, sleep action is cancelled. - * [upd] iris.InstanceUI -> Now displays in console when data-id is not unique. - * [new] self.DestroyUI() -> Remove a UI from the DOM tree and all its references. - * [new] self.DestroyAllUIs() -> Remove all UIs from a container. - * [new] self.Destroy() -> new Lifecycle function is called when a UI is destroyed. - * [new] self.$Get() -> shows error message when element isn't found - * [new] iris.screen.Destroy() -> Remove a created screen completely - * [rmv] iris.screen.Add() -> Now you can use self.AddScreen() - * [new] _AbstractScreen.AddScreen() -> Screens only can be registered inside of screens - * [new] iris.screen.WelcomeScreen() -> Now the applications must implement this entry point - * [rmv] The last parameter of self.InstanceUI(p_id,p_js,p_settings,p_$tmpl) -> you can't instance UI outside its own templates - * [rmv] The last parameter of self.$Get(p_id,p_$tmpl) -> you can't get elements outside its own templates - * [fix] Small code refactoring and fixed bugs. - * [new] Tested with JQuery 1.8 - * [doc] Documentation completed. - * - * [0.4.0] 2012-07-18 -> angel.sanchez@intelygenz.com, alejandro.gonzalez@intelygenz.com - * Previous project: http://code.google.com/p/iris-js/ - * WARNING: No backward with previous versions - * - */ - -/** - * @namespace - * This JavaScript library provides different client-side optimization techniques for front construction. - * It is independent and compatible with any server-side technology: JAVA, PHP, Python, GOOGLE APP ENGINE, .NET... - * - * @version 0.4.3 - * */ -var iris = new function() { - - var _APP_VERSION = "0.4.3" - , _APP_NAME = "iris" - , _JQ_MIN_VER = 1.5 - ; - - var _Env = null - , _Log = {"error":true} - , _LogPrefix = "" - , _Screen = {} - , _ScreenUrl = {} - , _ScreenContainer = {} - , _LastScreen = {} - , _PrevHashUrl = "" - , _Global = {} - , _Local = {} - , _Locale = null - , _Config = {} - , _Lang = {} - , _Event = {} - , _Includes = {} - , _Components = {} - , _AddOns = {} - , _AppBaseUri = "" - , _LastIncludePath - , _Head = $("head").get(0) - , _Cache = true - , _HasConsole - , _GotoCancelled = false - , _WelcomeScreenCreated = false - ; - - function _Init () { - $(window).bind("hashchange", _Window_OnHashChange); - - if( typeof jQuery === "undefined" ) { - _E( "jQuery " + _JQ_MIN_VER + "+ previous load required" ); - } - else if ( $().jquery < _JQ_MIN_VER ) { - _E( "jQuery " + $().jquery + " currently loaded, jQuery " + _JQ_MIN_VER + "+ required" ); - } - - _HasConsole = (window.console && window.console.debug && window.console.warn && window.console.error); - if ( !_HasConsole && window.console && window.console.log ) { - window.console.log("advanced console debugging is not supported in this browser"); - } - } - - function _Window_OnHashChange () { - - if ( !_WelcomeScreenCreated ) { - iris.E("You must set the welcome screen using iris.screen.WelcomeScreen()"); - return false; - } - - if ( _GotoCancelled ) { - _GotoCancelled = false; - return false; - } - - var prev = _PrevHashUrl.split("/") - , curr = document.location.hash.split("/") - , prevPath = "" - , currPath = "" - , pathWithoutParams - , hasRemainingChilds = false - ; - - // Check if all screen.canSleep() are true - if ( _PrevHashUrl != "" ) { - for ( var f=0, F=prev.length; f curr.length ) { - - for ( var f=0, F=prev.length; f -1 ) { - var link = document.createElement('link'); - link.rel = 'stylesheet'; - link.type = 'text/css'; - link.href = fileUrl; - _Head.appendChild(link); - } - else { - _LastIncludePath = p_uiFile; - var isHtml = p_uiFile.lastIndexOf(".html") > -1; - _AjaxSync( - fileUrl - , isHtml ? "html" : "text" - , function (p_data) { - if ( isHtml ) { - _IncludeHtml(p_data, p_uiFile); - } - else { - _IncludeJs(p_data); - } - } - , function (p_err) { - delete _Includes[fileUrl]; - _E(p_err.status, "Error loading file '" + fileUrl + "'"); - } - ); - } - } - } - - function _IncludeHtml ( p_html, p_uiFile ) { - _Includes[p_uiFile] = _LocaleParse(p_html); - } - - function _IncludeJs ( p_js ) { - var script = document.createElement("script"); - script.language = "javascript"; - script.type = "text/javascript"; - script.text = p_js; - _Head.appendChild(script); - } - - function _IncludeFiles () { - for ( var f=0,F=arguments.length; f -1 ) { - _Env = _Config["environment"][p]; - break; - } - } - if ( !_Env ) { - _Env = "pro"; - } - _LogPrefix = "[" + _Env + "]"; - } - return _Env; - } - }; - - function _AjaxSync (p_uri, p_dataType, f_success, f_error) { - $.ajax( - { url: p_uri - , dataType: p_dataType - , async: false - , cache: _Cache - , success : f_success - , error : f_error - } - ); - } - - function _GlobalLoad(p_hash){ - $.extend(_Global, p_hash); - return _Global; - }; - - function _GlobalData (p_label, p_value){ - if ( p_label && p_value !== undefined ) { - _Global[p_label] = p_value; - } - else if ( p_label ) { - return _Global[p_label]; - } - else { - return _Global; - } - }; - - function _LocalLoad(p_hash){ - $.extend(_Local, p_hash); - return _Local; - }; - - function _LocalData(p_label, p_value){ - if ( p_label && p_value !== undefined ) { - _Local[p_label][_GetEnv()] = p_value; - } - else if ( p_label ) { - return _Local[p_label][_GetEnv()]; - } - else { - return _Local; - } - }; - - function _Find(p_eventName, f_func){ - var events = _Event[p_eventName]; - if ( events ) { - for ( var f=0, F=events.length; f 0 ? base[0].attributes["href"].value : "/"; - _AppBaseUri = document.location.protocol + "//" + document.location.host + base; - } - return _AppBaseUri; - }; - - function _Ajax (p_settings) { - return $.ajax(p_settings); - } - - function _GetObjectValue (p_obj, p_label) { - var value; - if ( p_label.indexOf(".") > -1 ){ - var labels = p_label.split("."); - var f,F=labels.length; - for(f=0; f= 0) ? settings["formatPos"] : settings["formatNeg"]; - - var decimal = val % 1; - var num = String( Math.abs(val-decimal) ); - - decimal = String(Math.abs(decimal).toFixed(settings["precision"])) - decimal = decimal.substr(2); - - for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) { - num = num.substring(0, num.length - (4 * i + 3)) + settings["thousand"] + num.substring(num.length - (4 * i + 3)); - } - - return format.replace("n", num + settings["decimal"] + decimal ); - } - - function _DateFormat (p_date, p_format) { - if ( !p_format ) { - p_format = _GetRegionalSetting("dateFormat"); - } - - if ( typeof p_date !== "object" ) { - p_date = new Date(Number(p_date)) - } - - var dateFormat = ""; - for (var f=0, F=p_format.length; f 12) ? "p.m." : "a.m."; - case "A": - return (p_date.getHours() > 12) ? "PM" : "AM"; - case "U": - return Math.floor(p_date.getTime() * 0.001); - default: - return p_formatChar; - } - } - - var _Regional = { - "en-US" : { - dayNames : ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"] - ,monthNames : ["January","February","March","April","May","June","July","August","September","October","November","December"] - ,dateFormat : "m/d/Y h:i:s" - ,currency : { - formatPos : "$ n" - ,formatNeg : "($ n)" - ,decimal : "." - ,thousand : "," - ,precision : 2 - } - } - ,"es-ES" : { - dayNames : ["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"] - ,monthNames : ["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"] - ,dateFormat : "d/m/Y H:i:s" - ,currency : { - formatPos : "n €" - ,formatNeg : "-n €" - ,decimal : "," - ,thousand : "." - ,precision : 2 - } - } - }; - - function _AddRegional (p_locale, p_regional) { - if ( !p_regional.hasOwnProperty("dayNames") - || !p_regional.hasOwnProperty("monthNames") - || !p_regional.hasOwnProperty("dateFormat") - || !p_regional.hasOwnProperty("currency") - || !p_regional["currency"].hasOwnProperty("formatPos") - || !p_regional["currency"].hasOwnProperty("formatNeg") - || !p_regional["currency"].hasOwnProperty("decimal") - || !p_regional["currency"].hasOwnProperty("thousand") - || !p_regional["currency"].hasOwnProperty("precision") - ) { - iris.E("Regional '" + p_locale + "' has invalid format ", p_regional); - } - else { - _Regional[p_locale] = p_regional; - } - } - - /** - * @class - * Provide mechanism to store and retrieve settings values. - */ - function _Settable () { - - this.__Setting__ = null; - - /** - * Set multiple component settings. - * You can access to this values using {@link iris-_Settable#Setting}. - * @function - * @example - * - * self.Settings({ - * "min" : 0 - * ,"label" : "example" - * }); - */ - this.Settings = function (p_settings) { - $.extend(this.__Setting__, p_settings); - }; - - /** - * Set or get a single component setting. - * @function - * @example - * - * var label = self.Setting("label"); // Get setting value - * - * self.Setting("label", "example"); // Set setting value - */ - this.Setting = function (p_label, p_value) { - if ( p_value === undefined ) { - if ( !this.__Setting__.hasOwnProperty(p_label) ) { - iris.W("The setting ", p_label, " is not in ", this.__Setting__, this); - } - return this.__Setting__[p_label]; - } - else { - this.__Setting__[p_label] = p_value; - } - }; - }; - - /** - * @class - * Abstract component for UIs / Screens extending. - * Common properties and functions. - */ - function _AbstractComponent () { - this.TEMPLATE_APPEND = "append"; - this.TEMPLATE_REPLACE = "replace"; - - this.__$Tmpl__ = null; - this.__Id__ = null; - this.__UIComponents__ = null; - this.__$Container__ = null; - this.__IsSleeping__ = null; - this.__FileJs__ = null; - this.__FileTmpl__ = null; - - this.__Sleep__ = function () { - for ( var f=0, F=this.__UIComponents__.length; f < F; f++ ) { - this.__UIComponents__[f].__Sleep__(); - } - this.__IsSleeping__ = true; - this.Sleep(); - }; - - this.__Awake__ = function (p_params) { - for ( var f=0, F=this.__UIComponents__.length; f < F; f++ ) { - this.__UIComponents__[f].__Awake__(); - } - this.__IsSleeping__ = false; - this.Awake(p_params); - }; - - this.__Destroy__ = function () { - if ( !this.__IsSleeping__ ) { - this.__Sleep__(); - } - - for ( var f=0, F=this.__UIComponents__.length; f < F; f++ ) { - this.__UIComponents__[f].__Destroy__(); - } - this.__UIComponents__ = null; - this.Destroy(); - }; - - this.__Template__ = function (p_htmlUrl, p_params, p_mode) { - this.__FileTmpl__ = p_htmlUrl; - - if ( typeof p_htmlUrl == "undefined" ) { - this.__$Tmpl__ = this.__$Container__; - return this.__$Tmpl__; - } - - iris.Include(p_htmlUrl); - - var tmplHtml = p_params ? _TemplateParse(_Includes[p_htmlUrl], p_params, p_htmlUrl) : _Includes[p_htmlUrl]; - var $tmpl = $(tmplHtml); - - this.__$Tmpl__ = $tmpl; - if ( $tmpl.size() > 1 ) { - iris.E("Template '" + p_htmlUrl + "' must have only one root node"); - } - - switch ( p_mode ) { - case this.TEMPLATE_APPEND: - this.__$Container__.append($tmpl); - break; - case this.TEMPLATE_REPLACE: - this.__$Container__.replaceWith($tmpl); - break; - default: - iris.E("Unknown template mode '" + p_mode + "'"); - } - - }; - - /** - * Show the template object. - * If the component is a screen, this is called automatically - * after self.Awake() when iris navigates. - * - * See {@link iris.Goto} for more details. - * @function - */ - this.Show = function () { - this.__$Tmpl__.show(); - }; - - /** - * Hide the template object. - * If the component is the current screen, this is called automatically - * after self.Sleep() when iris navigates to other screen. Is called too - * when a new screen is created. - * - * See {@link iris.Goto} for more details. - * @function - */ - this.Hide = function () { - this.__$Tmpl__.hide(); - }; - - /** - * Find a JQuery object, using its data-id attribute, in the template. - * The template must be defined using self.Template().
    - * The data-id must be unique in the template. - * - * @function - * @param {String} [p_id] Element data-id value, if no set return root element (optional) - * @example - * - * var $label = self.$Get("span_label"); - * - * var $root = self.$Get(); - */ - this.$Get = function (p_id) { - if ( this.__$Tmpl__ == null ) { - iris.E("You must set a template using self.Template() in '" + this.__FileJs__ + "'"); - return undefined; - } - - if ( p_id ) { - var - id = "[data-id=" + p_id + "]" - , filter = this.__$Tmpl__.filter(id) - , $element = null - ; - - if ( filter.length > 0 ) { - $element = filter; - } - else { - var find = this.__$Tmpl__.find(id); - if ( find.size() > 0 ) { - $element = find; - } - } - - if ( $element == null ) { - iris.E("[data-id=" + p_id + "] not found in '" + this.__FileTmpl__ + "' used by '" + this.__FileJs__ + "'"); - return undefined; - } - else if ( $element.size() > 1 ) { - iris.E("[data-id=" + p_id + "] must be unique in '" + this.__FileTmpl__ + "' used by '" + this.__FileJs__ + "'"); - return undefined; - } - return $element; - } - - return this.__$Tmpl__; - }; - - /** - * Create a new UI component instance. - * - * The created component is registered into the parent screen or UI, - * so you must use {@link iris-_AbstractComponent#DestroyUI} in order to remove it. - * - * The component is added to p_id container or replace it. - * See {@link iris-_AbstractUI#TemplateMode} for more details. - * - * @function - * @param {String} p_id Container data-id - * @param {String} p_jsUrl UI file path - * @param {Object} p_uiSettings UI Settings - * @example - * - * self.InstanceUI("custom_ui", "custom_ui.js"); - * - * self.InstanceUI("btn_ok", "button.js", {"label":"OK","ico":"accept"}); - */ - this.InstanceUI = function (p_id, p_jsUrl, p_uiSettings) { - var $container = this.$Get(p_id); - if ( $container.size() == 1 ) { - var uiInstance = _InstanceUI($container, $container.data("id"), p_jsUrl, p_uiSettings); - this.__UIComponents__[this.__UIComponents__.length] = uiInstance; - return uiInstance; - } - }; - - /** - * Remove a child UI component completely previously created using {@link self.InstanceUI}. - * Remove parent references. - * @function - * @param {UI} p_ui UI to be removed - * @example - * - * var customUI = self.InstanceUI("custom_ui", "custom_ui.js"); - * self.DestroyUI(customUI); - */ - this.DestroyUI = function (p_ui) { - for (var f=0, F=this.__UIComponents__.length; f < F; f++) { - if (this.__UIComponents__[f] == p_ui) { - this.__UIComponents__.splice(f, 1); - p_ui.__Destroy__(); - p_ui.$Get().remove(); - break; - } - } - }; - - /** - * Remove all UI components from a container. - * The UIs must be previously created using {@link self.InstanceUI}.
    - * Remove parent references. - * @function - * @param {String|JQuery} p_idOrJq UI Container data-id or JQuery object - * @example - * self.DestroyAllUIs("container"); - * - * self.DestroyAllUIs($container); - */ - this.DestroyAllUIs = function (p_idOrJq) { - var contSelector = typeof p_idOrJq === "string" ? "[data-id=" + p_idOrJq + "]" : p_idOrJq.selector; - var ui; - for (var f=0, F=this.__UIComponents__.length; f < F; f++) { - ui = this.__UIComponents__[f]; - - if (ui.__$Container__.selector == contSelector) { - this.__UIComponents__.splice(f--, 1); - F--; - - ui.__Destroy__(); - ui.$Get().remove(); - } - } - }; - - /** - * Get the component container. - * If the component is a screen, the container is - * set using {@link iris-_AbstractScreen#AddScreen} function. - * Otherwise if the component is a UI, the container is - * set using {@link iris-_AbstractComponent#InstanceUI} function. - * @function - * @example - * - * var screenContainer = self.$Container(); - */ - this.$Container = function () { - return this.__$Container__; - }; - - // To override functions - - /** - * Called automatically only once at the creation phase. - * Function to override. - * @function - */ - this.Create = function () {}; - - /** - * Called automatically when a screen is showed. - * Function to override. - * @function - */ - this.Awake = function () {}; - - /** - * Called automatically when a screen is going to sleep, before {@link iris-_AbstractComponent#Sleep}. - * If return false, the self.Sleep() function is not called. - * @function - */ - this.CanSleep = function () { - return true; - }; - - /** - * Called automatically when a screen is hidden. - * Function to override. - * @function - */ - this.Sleep = function () {}; - - /** - * Called automatically by {@link iris-_AbstractComponent#DestroyUI}. - * Function to override. - */ - this.Destroy = function () {}; - }; - _AbstractComponent.prototype = new _Settable(); - - /** - * @class - * Abstract class for AddOn extending. - * Common AddOn functions and properties. - */ - function _AbstractAddOn () { - this.__Components__ = null; - - /** - * Add a array of UIs to the AddOn. - * It is called automatically from {@link iris.ApplyAddOn}. - * @param p_uis {Array} Array of UIs - * @function - */ - this.AddAll = function (p_uis) { - for (var f=0, F=p_uis.length; fself.TEMPLATE_REPLACE. - * Use this function before call {@link iris-_AbstractUI.Template}. - * @function - * @example - * self.TemplateMode(self.TEMPLATE_APPEND); - * self.Template("tmpl.html"); - */ - this.TemplateMode = function (p_mode) { - this.__TemplateMode__ = p_mode; - }; - - /** - * Create the component template. - * Translate multilanguage values, draw parameters, - * create DOM elements and insert into container or replace it. - * - * See {@link iris-_AbstractUI.TemplateMode}. - * @function - * @example - * self.TemplateMode(self.TEMPLATE_APPEND); - * self.Template("tmpl.html", {"age":23}); - */ - this.Template = function (p_htmlUrl, p_params) { - this.__Template__(p_htmlUrl, p_params, this.__TemplateMode__); - }; - }; - _AbstractUI.prototype = new _AbstractComponent(); - - /** - * @class - * Abstract class for screen extending. - * Common screen functions and properties. - */ - function _AbstractScreen () { - - /** - * Create the screen template. - * Translate multilanguage values, draw parameters, - * create DOM elements and it is insert into the screen container. - * @function - * @example - * self.Template("tmpl.html", {"name":"Jonh"}); - */ - this.Template = function (p_htmlUrl, p_params) { - this.__Template__(p_htmlUrl, p_params, this.TEMPLATE_APPEND); - }; - - /** - * Add a new screen. - * You can navigate to this using iris.Goto. - * See {@link iris.Goto} for more details. - * @function - * @param {JQuery} p_containerId Screen container data-id - * @param {String} p_screenPath Screen URL path - * @param {String} p_jsUrl Screen controller - * @example - * self.AddScreen( - * "screens" - * , "#books/edit" - * , "screen/book_edit.js" - * ); - * - * iris.Goto("#books/edit"); - */ - this.AddScreen = function _ScreenAdd (p_containerId, p_screenPath, p_jsUrl) { - var $cont = this.$Get(p_containerId); - - if ( $cont.data("screen_context") === undefined ) { - - // Set a unique screen context id to the screen container - // like: #path/to/screen|containerid - $cont.data("screen_context", this.__Id__ + "|" + p_containerId); - } - - _ScreenUrl[p_screenPath] = p_jsUrl; - _ScreenContainer[p_screenPath] = $cont; - }; - - }; - _AbstractScreen.prototype = new _AbstractComponent(); - - function _Deserialize (p_$form, p_data) { - var element, tag, value; - for ( name in p_data ) { - element = p_$form.find('[name="' + name + '"]'); - if ( element.length > 0 ) { - tag = element[0].tagName.toLowerCase(); - value = p_data[name]; - switch (tag) { - case "select": - case"textarea": - $(element).val(value); - break; - case "input": - switch (tag) { - case "checkbox": - if (value) { - element.attr("checked", "checked"); - } - break; - case "radio": - element.filter('[value="'+value+'"]').attr("checked", "checked"); - break; - default: - element.val(value); - } - } - } - }; - } - - function _Serialize (p_$form) { - var json = {}; - $.map(p_$form.serializeArray(), function(p_obj, p_index){ - json[ p_obj['name'] ] = p_obj['value']; - }); - return json; - } - - - /** @namespace Screen management: Add a new screen, ... */ - this.screen = {}; - - /** @namespace Event management: Add/remove listeners and trigger events. */ - this.event = {}; - - /** @namespace Application configuration: Load configuration data and environments. */ - this.config = {}; - - /** @namespace User interface: Work with HTML elements. */ - this.ui = {}; - - /** @namespace Asynchronous HTTP request and URL base. */ - this.net = {}; - - /** @namespace Global configurations management */ - this.global = {}; - - /** @namespace Environment configurations management */ - this.local = {}; - - /** @namespace Multilanguage : Load translation files, get translated text, ...*/ - this.lang = {}; - - /** @namespace Various utilities: Date formatting, serialization, ... */ - this.util = {}; - - /** - * Load the configuration JSON. - * You can use iris without load this file. - * @function - * @param {JSON} config Contains information about environments, global and environment settings, loglevel logs ... - * @example - * iris.config.Load({ - * "environment-default" : "pro" - *,"environments-nocache" : "dev" - * ,"environment": { - * "localhost" : "dev" - * ,"www.example.com" : "pro" - * } - * ,"log": { - * "dev": "debug,warning,error" - * ,"pro" : "debug,error" - * } - * ,"global": { - * "global-variable" : "example" - * } - * ,"local": { - * "local-variable" : { - * "dev" : "example-dev" - * ,"pro" : "example-pro" - * } - * } - * }); - * - */ - this.config.Load = _ConfigLoad; - - /** - * Set or get the current environment. - * If a configuration file is loaded, iris try set this value using - * the current URL and the defined environments. - * If not match anything use "environment-default" - * The local variables depends of this value. - * @function - * @param {String} [p_env] Environment name (optional) - * @example - * Example: URL=http://localhost:8080/admin - * Configuration file: - * ... - * "environment": { - * "localhost" : "dev" - * ,"www.example.com" : "pro" - * } - * ... - * - * iris.config.Env(); // return "dev" - * - * iris.config.Env("pro"); // set environment to "pro" - */ - this.config.Env = _GetEnv; - - /** - * Add global configuration values​​. - * If you load a configuration file, automatically load the object "global" ({@link iris.config.Load}). - * See {@link iris.global.Data} for more details. - * @function - * @param {Object} p_hash Object like: { "name" : value, ... } - * @example - * iris.global.Load({"global-variable" : "value"}); - * iris.global.Data("global-variable"); // return "value" - */ - this.global.Load = _GlobalLoad; - - /** - * Get or set the value of a global configuration variable. - * If label and value are not specified then return an object with all values. - * See {@link iris.global.Load} for more details. - * @function - * @param {String} [p_label] Variable label (optional) - * @param {String} [p_value] Variable value (optional) - * @example - * iris.global.Data("global-variable"); - */ - this.global.Data = _GlobalData; - - /** - * Add configuration values that depends on current environment. - * If you load a configuration file, automatically load the object "local" ({@link iris.config.Load}). - * See {@link iris.local.Data} for more details. - * @function - * @param {Object} p_hash Object like: { "name" : {"environment" : value, ... }, ... } - * @example - * iris.global.Load({"global-variable" : "value"}); - * iris.global.Data("global-variable"); // return "value" - */ - this.local.Load = _LocalLoad; - - /** - * Get or set the value of a configuration variable that depends on current environment. - * If label and value are not specified then return an object with all values. - * See {@link iris.local.Load} for more details. - * @function - * @param {String} [p_label] Variable label (optional) - * @param {String} [p_value] Variable value (optional) - * @example - * iris.local.Data({ - * "local-variable" : { - * "dev" : "example-dev" - * ,"pro" : "example-pro" - * } - * }); - * - * // If environemnt="dev" then return "example-dev" - * iris.local.Data("local-variable"); - */ - this.local.Data = _LocalData; - - /** - * Add translation texts to a locale. - * See {@link iris.lang.Get} for more details. - * @function - * @param {String} p_locale Locale - * @param {Object} p_data Object like { "LABEL" : "value", GROUP : { "LABEL" : "value", ... }, ... } - * @example - * iris.lang.Load( "es-ES" - * ,{ "LABEL":"etiqueta" - * ,{"GROUP":{ - * "NESTED_VALUE" : "valor anidado" - * } - * }); - * - * iris.lang.Get("LABEL"); - * iris.lang.Get("GROUP.NESTED_VALUE"); - */ - this.lang.Load = _LocaleLoad; - - /** - * Load remote translation texts into a locale. - * @function - * @param {String} p_locale Locale - * @param {String} p_uri URL to load - * @param {Object} p_settings {@code {"success" : function (p_locale) {}, "error" : function (p_locale) {}} } - * @example - * iris.lang.LoadFrom( - * "es-ES" - * , "http://example.com/lang" - * , {"success":_OnLangLoad} - * ); - */ - this.lang.LoadFrom = _LangLoadFrom; - - /** - * Get a translation text according to the Locale. - * You can access to nested values using dot notation. - * See {@link iris.local.Locale} for more details. - * @function - * @param {String} p_label Label - * @param {String} [p_locale] Locale (optional) - * @example - * iris.lang.Get("LABEL"); - * - * iris.lang.Get("GROUP.LABEL"); - */ - this.lang.Get = _LangGet; - - /** - * Set or get the current locale. - * @function - * @param {String} [p_locale] Locale (optional) - * @example - * var locale = iris.lang.Locale(); - * iris.lang.Locale("es-ES"); - */ - this.lang.Locale = _LocaleGet; - - /** - * Safe debug traces. - * @function - * @param {arguments} - * @example - * iris.L("text", variable); - */ - this.L = _L; - - /** - * Safe debug traces. If debug-level is active for the current environment then print traces. - * See {@link iris.config.Load} for more details. - * @function - * @param {arguments} - * @example - * iris.D("text", variable); - */ - this.D = _D; - - /** - * Safe warning traces. If warning-level is active for the current environment then print traces. - * @function - * @see {@link iris.config.Load} - * @param {arguments} - * @example - * iris.W("text", variable); - */ - this.W = _W; - - /** - * Safe error traces. If error-level is active for the current environment then print traces. - * See {@link iris.config.Load} for more details. - * @function - * @param {arguments} - * @example - * iris.E("text", variable); - */ - this.E = _E; - - /** - * Add an event listener. - * See {@link iris.event.Notify} and {@link iris.event.Remove} for more details. - * @function - * @param {String} p_eventName Event identifier - * @param {Function} f_func Event listener - * @example - * iris.event.Subscribe("user_select", _OnUserSelect); - */ - this.event.Subscribe = _EventSubscribe; - - /** - * Trigger an event. - * See {@link iris.event.Subscribe} and {@link iris.event.Remove} for more details. - * @function - * @param {String} p_eventName Event identifier - * @param {Object} p_data Event paramater - * @example - * iris.event.Notify( - * "user_select" - * , {"user_id" : 123, "name" : "John"} - * ); - */ - this.event.Notify = _EventNotify; - - /** - * Remove an event listener. - * See {@link iris.event.Subscribe} and {@link iris.event.Notify} for more details. - * @function - * @param {String} p_eventName Event identifier - * @param {String} f_func Event listener - * @example - * iris.event.Remove("user_select", _OnUserSelect); - */ - this.event.Remove = _EventRemove; - - /** - * Get or set the application base URL. - * Use the <base > HTML tag if are defined. - * @function - * @param {String} [p_baseUri] URL base (optional) - * @example - * // Current URL = http://www.example.com/admin/example/path?a=1 - * iris.net.BaseUri(); // return http://www.example.com/ - */ - this.net.BaseUri = _BaseUri; - - /** - * Do an Ajax request. - * Accepts the same parameters as jQuery.ajax() - * @function - * @see JQuery Ajax. - * @example - * iris.net.Ajax( - * { "url" : "/s/myservice" - * , "type" : "GET" - * } - * ); - */ - this.net.Ajax = _Ajax; - - /** - * Register a Screen object. - * It must appear at the beginning of the screen file. - * @function - * @param {Function} f_screen Screen class - * @example - * iris.Screen( - * function (self) { - * self.Create = function () { - * } - * - * self.Awake = function (p_params) { - * } - * - * self.Sleep = function () { - * } - * } - * ); - */ - this.Screen = _ScreenCreate; - - /** - * Register an UI object. - * It must appear at the beginning of the screen file. - * @function - * @param {Function} f_ui UI class - * @example - * iris.UI( - * function (self) { - * self.Create = function (p_domAttr, p_settings) { - * } - * - * self.Awake = function (p_params) { - * } - * - * self.Sleep = function () { - * } - * } - * ); - */ - this.UI = _UICreate; - - /** - * Set the initial screen. - * This screen is registered as the root screen - * and automatically is shown. - * @param {String} p_jsUrl Screen controller - * @function - * @example - * iris.screen.WelcomeScreen("screen/main.js"); - */ - this.screen.WelcomeScreen = _WelcomeScreen; - - /** - * Destroy a created screen. - * Free screen and its UIs memory. - * Call in cascade all Sleep() and Destroy() functions for its UI childs. - * @function - * @param {String} p_screenPath Screen URL path - * @example - * iris.screen.Destroy("#books/edit"); - */ - this.screen.Destroy = _ScreenDestroy; - - /** - * Copy all data-* attributes to an object. - * Remove the "data-" prefix from attribute names. - * @function - * @param {JQuery} p_$obj Object to merge - * @example - * var $obj = $("<div data-id='test' data-class='myclass'></div>") - * var params = iris.ui.JqToHash($obj); - * // return: {"id" : "test", "class" : "myclass"} - */ - this.ui.JqToHash = _JqToHash; - - /** - * Set the object values to a JQuery object. - * @function - * @param {Object} p_hash Object with source values - * @param {JQuery} p_$obj JQuery object target - * @param {String[]} [p_filter] Indicates that values ​​should be copied (optional) - * @example - * iris.ui.HashToJq( - * { "class":"myclass", "other":"other_value" } - * , $obj - * , ["class"] - * ); // Set the $obj attribute "class" - */ - this.ui.HashToJq = _HashToJq; - - /** - * Include static resources dynamically. - * The load is synchronous and tracks all the files included to prevent them to be included twice.
    - * You can include:
    - *
      - *
    • CSS files: style files are included by creating a link dynamically in the header of the index page.
    • - *
    • JS files: script files are included by creating a script object dynamically in the header of the index page - * and append the loaded content to it. When including javascript files you must take care of the syntax - * as including javascript file with some syntax error would produce an error when adding it to a script element.
    • - *
    - * @function - * @param {arguments} File paths - * @example - * iris.Include("app/service/myservice.js", "app/css/mycss.css"); - */ - this.Include = _IncludeFiles; - - /** - * Formats a Date object or timestamp to the specified format and according to the current locale.
    - * You can use the following special characters:

    - * a 'a.m.' or 'p.m.'
    - * A 'AM' or 'PM'
    - * b Month, textual, 3 letters, lowercase. 'jan'
    - * d Day of the month, 2 digits with leading zeros. '01' to '31'
    - * D Day of the week, textual, 3 letters. 'Fri'
    - * F Month, textual, long. 'January'
    - * h Hour, 12-hour format. '01' to '12'
    - * H Hour, 24-hour format. '00' to '23'
    - * i Minutes. '00' to '59'
    - * l Day of the week, textual, long. 'Friday'
    - * m Month, 2 digits with leading zeros. '01' to '12'
    - * M Month, textual, 3 letters. 'Jan'
    - * n Month without leading zeros. '1' to '12'
    - * s Seconds, 2 digits with leading zeros. '00' to '59'
    - * U Seconds since the Unix Epoch (January 1 1970 00:00:00 UTC)
    - * y Year, 2 digits. '99'
    - * Y Year, 4 digits. '1999'
    - * @function - * @param {Date|Timestamp} p_date Date object or timestamp (UNIX timestamp) - * @param {String} [p_format] Format string (optional) - * @example - * iris.util.DateFormat(new Date(),"ymd"); - * iris.util.DateFormat("1331954654564","d/m/y h:i:s"); // 17/03/12 04:24:14 - * iris.util.DateFormat(1331954654564); - */ - this.util.DateFormat = _DateFormat; - - /** - * Fill all form component with data. - * @function - * @param p_$form {JQuery Object} Form target - * @param p_data {Object} Object data source - * @example - * var data = {"name":"Jonh", "surname": "Doe"}; - * iris.util.Deserialize($form, data); - */ - this.util.Deserialize = _Deserialize; - - /** - * Serialize a form data to Object. - * @function - * @param p_$form - * @example - * var data = iris.util.Serialize($form); - */ - this.util.Serialize = _Serialize; - - /** - * Navigate to a screen. - * The screen must be previously added using {@link iris-_AbstractScreen#AddScreen}.
    - * You can send parameters to the target screen as ... /screen?param1=value1¶m2=value2/ ..., - * remember apply encodeURI() to the parameter values. - * @function - * @param p_hashUri {String} Hash URL - * @example - * - * iris.Goto("#home/section/subsection"); - * - * // Call with screen parameters - * iris.Goto("#home/section?id=5&name=example%20name/subsection"); - * - * // Remember encode param values - * var title = encodeURI("Title Example"); - * iris.Goto("#home/section?title=" + title); - */ - this.Goto = _Goto; - - /** - * Register a AddOn object. - * It must appear at the beginning of the AddOn file. - * @function - * @param {Function} f_addOn AddOn Class - * @example - * iris.AddOn( - * function (self) { - * self.Create = function ( p_uis ) { - * } - * ... - * } - * ); - */ - this.AddOn = _AddOn; - - /** - * Apply a AddOn to a group of UI components or single UI. - * @function - * @param p_id {String} AddOn identifier - * @param p_uis {Object|Array} UI Component/s - * @example - * var customUI = self.InstanceUI("input", "input.js"); - * iris.ApplyBE("validator.js", customUI); - * - * var otherCustomUI = self.InstanceUI("input", "input.js"); - * iris.ApplyAddOn("validator.js", [customUI, otherCustomUI]); - * - */ - this.ApplyAddOn = _ApplyAddOn; - - /** - * Specify a new regional or change the actuals regionals to format dates and currencies. - * You must set a valid regional object with all properties: 'dayNames', 'monthNames', etc...
    - * Iris has two predefined regionals: - *
    	"en-US" : {
    -	 *		 dayNames : ["Sunday","Monday","Tuesday"
    -	 *				,"Wednesday","Thursday","Friday","Saturday"]
    -	 *		,monthNames : ["January","February","March"
    -	 *				,"April","May","June","July"
    -	 *				,"August","September","October"
    -	 *				,"November","December"]
    -	 *		,dateFormat : "m/d/Y h:i:s"
    -	 *		,currency : {
    -	 *			 formatPos : "$ n"
    -	 *			,formatNeg : "($ n)"
    -	 *			,decimal : "."
    -	 *			,thousand : ","
    -	 *			,precision : 2
    -	 *		}
    -	 *	}
    -	 *	
    -	 *	"es-ES" : {
    -	 *		 dayNames : ["Domingo","Lunes","Martes"
    -	 *			,"Miércoles","Jueves","Viernes","Sábado"]
    -	 *		,monthNames : ["Enero","Febrero","Marzo"
    -	 *			,"Abril","Mayo","Junio","Julio","Agosto"
    -	 *			,"Septiembre","Octubre","Noviembre","Diciembre"]
    -	 *		,dateFormat : "d/m/Y H:i:s"
    -	 *		,currency : {
    -	 *			 formatPos : "n €"
    -	 *			,formatNeg : "-n €"
    -	 *			,decimal : ","
    -	 *			,thousand : "."
    -	 *			,precision : 2
    -	 *		}
    -	 *	}
    - * @function - * @param p_locale {String} Locale identifier - * @param p_regional {Object} Regional data - * @example - * iris.Regional("es-ES", { - * dayNames : ["D","L","M","M","J","V","S"] - * ,monthNames : ["Ene","Feb","Mar","Abr","May","Jun" - * ,"Jul","Ago","Sep","Oct","Nov","Dic"] - * ,dateFormat : "d/m/Y" - * ,currency : { - * formatPos : "n €" - * ,formatNeg : "-n €" - * ,decimal : "," - * ,thousand : "." - * ,precision : 2 - * } - * } - */ - this.Regional = _AddRegional; - - _Init(); - -}; diff --git a/js/iris-0.4.3.min.info b/js/iris-0.4.3.min.info deleted file mode 100644 index a51b52a..0000000 --- a/js/iris-0.4.3.min.info +++ /dev/null @@ -1,85 +0,0 @@ -Minified using: -http://closure-compiler.appspot.com/home - -Settings: - Optimization -> Simple - Formatting -> All unchecked - -Result: - Original Size: 49.31KB (13.96KB gzipped) - Compiled Size: 13.55KB (4.97KB gzipped) - - Saved 72.52% off the original size (64.36% off the gzipped size) - -License and changelog: - -/* - * Copyright (c) 2012 Intelygenz - * All rights reserved. - * - * BSD License - * - * 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. - * 3. Neither the name of copyright holders nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "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 COPYRIGHT HOLDERS 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. - * - * Download: http://intelygenz.github.com/iris/ - * - * Creation date: 2012-01-12 - * - * [version] date -> authors - * upd|fix|new|dep|rmv - description - * - * [0.4.3] 2012-09-06 -> angel.sanchez@intelygenz.com - * [fix] Screen Context Bug (https://github.com/intelygenz/iris/issues/10) - * [fix] Load Multiple Locales Bug (https://github.com/intelygenz/iris/issues/15) - * [new] Nested properties value in Templates (https://github.com/intelygenz/iris/issues/8) - * [upd] More Descriptive Error Messages (https://github.com/intelygenz/iris/issues/12) - * [new] Specify new Regional configuration (https://github.com/intelygenz/iris/issues/17) - * [doc] Add Screen Paramaters Example (https://github.com/intelygenz/iris/issues/11) - * - * [0.4.2] 2012-09-04 -> alejandro.gonzalez@intelygenz.com, angel.sanchez@intelygenz.com - * [upd] _LocaleParse -> Now can finds variables with dot notation, eg: @@COMMON.HELLO@@. This mean that you can have nested objects in lang json files. - * [new] iris.AddOn, iris.ApplyAddOn -> Now you can define groups of UIs and extends a UI functionality - * [new] screen.CanSleep -> All screens can define a CanSleep public method that returns a boolean indicating when the screen can be leaved or not. - * If only one screen can't sleep, sleep action is cancelled. - * [upd] iris.InstanceUI -> Now displays in console when data-id is not unique. - * [new] self.DestroyUI() -> Remove a UI from the DOM tree and all its references. - * [new] self.DestroyAllUIs() -> Remove all UIs from a container. - * [new] self.Destroy() -> new Lifecycle function is called when a UI is destroyed. - * [new] self.$Get() -> shows error message when element isn't found - * [new] iris.screen.Destroy() -> Remove a created screen completely - * [rmv] iris.screen.Add() -> Now you can use self.AddScreen() - * [new] _AbstractScreen.AddScreen() -> Screens only can be registered inside of screens - * [new] iris.screen.WelcomeScreen() -> Now the applications must implement this entry point - * [rmv] The last parameter of self.InstanceUI(p_id,p_js,p_settings,p_$tmpl) -> you can't instance UI outside its own templates - * [rmv] The last parameter of self.$Get(p_id,p_$tmpl) -> you can't get elements outside its own templates - * [fix] Small code refactoring and fixed bugs. - * [new] Tested with JQuery 1.8 - * [doc] Documentation completed. - * - * [0.4.0] 2012-07-18 -> angel.sanchez@intelygenz.com, alejandro.gonzalez@intelygenz.com - * Previous project: http://code.google.com/p/iris-js/ - * WARNING: No backward with previous versions - * - */ diff --git a/js/iris-0.4.3.min.js b/js/iris-0.4.3.min.js deleted file mode 100644 index f01ba9c..0000000 --- a/js/iris-0.4.3.min.js +++ /dev/null @@ -1,27 +0,0 @@ -var iris=new function(){function O(){if(!P)return iris.E("You must set the welcome screen using iris.screen.WelcomeScreen()"),!1;if(I)return I=!1;var a=t.split("/"),b=document.location.hash.split("/"),c="",d="",e,u=!1;if(""!=t)for(var g=0,v=a.length;gb.length){g=0;for(v=a.length;ga?"0"+a:a}function ha(a,b){var c=D[f];switch(a){case "y":return String(b.getFullYear()).substring(2);case "Y":return b.getFullYear();case "m":return c=b.getMonth()+1,s(c);case "n":return b.getMonth()+1;case "M":return c[monthNames][b.getMonth()].substring(0,3);case "b":return c[monthNames][b.getMonth()].substring(0,3).toLowerCase();case "F":return c[monthNames][b.getMonth()];case "d":return c=b.getDate(),s(c);case "D":return c[dayNames][b.getDay()].substring(0, -3);case "l":return c[dayNames][b.getDay()];case "s":return c=b.getSeconds(),s(c);case "i":return c=b.getMinutes(),s(c);case "H":return c=b.getHours(),s(c);case "h":return c=b.getHours(),s(0==c%12?12:c%12);case "a":return 12$().jquery&&p("jQuery "+$().jquery+" currently loaded, jQuery 1.5+ required");r=window.console&&window.console.debug&&window.console.warn&&window.console.error;!r&&(window.console&&window.console.log)&&window.console.log("advanced console debugging is not supported in this browser")}; \ No newline at end of file diff --git a/js/iris-0.4.4.js b/js/iris-0.4.4.js deleted file mode 100644 index 669fcb4..0000000 --- a/js/iris-0.4.4.js +++ /dev/null @@ -1,2091 +0,0 @@ -/* - * Copyright (c) 2012 Intelygenz - * All rights reserved. - * - * BSD License - * - * 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. - * 3. Neither the name of copyright holders nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "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 COPYRIGHT HOLDERS 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. - * - * Download: http://intelygenz.github.com/iris/ - * - * Creation date: 2012-01-12 - * - * [version] date -> authors - * upd|fix|new|dep|rmv - description - * - * [0.4.4] 2012-09-27 - * [new] Screen error messages when template is not set (https://github.com/intelygenz/iris/issues/19) - * [new] Prepend UI (https://github.com/intelygenz/iris/issues/21) - * [rmv] Remove currency symbol of number regional format - * [upd] self.Settings returns complete __Settings__ if don't use any parameter - * [fix] Fix asynchronous load components on Firefox when hashchange event is triggered - * [fix] Screen parameter bugs (https://github.com/intelygenz/iris/issues/9) - * - * [0.4.3] 2012-09-06 -> angel.sanchez@intelygenz.com - * [fix] Screen Context Bug (https://github.com/intelygenz/iris/issues/10) - * [fix] Load Multiple Locales Bug (https://github.com/intelygenz/iris/issues/15) - * [new] Nested properties value in Templates (https://github.com/intelygenz/iris/issues/8) - * [upd] More Descriptive Error Messages (https://github.com/intelygenz/iris/issues/12) - * [new] Specify new Regional configuration (https://github.com/intelygenz/iris/issues/17) - * [doc] Add Screen Paramaters Example (https://github.com/intelygenz/iris/issues/11) - * - * [0.4.2] 2012-09-04 -> alejandro.gonzalez@intelygenz.com, angel.sanchez@intelygenz.com - * [upd] _LocaleParse -> Now can finds variables with dot notation, eg: @@COMMON.HELLO@@. This mean that you can have nested objects in lang json files. - * [new] iris.AddOn, iris.ApplyAddOn -> Now you can define groups of UIs and extends a UI functionality - * [new] screen.CanSleep -> All screens can define a CanSleep public method that returns a boolean indicating when the screen can be leaved or not. - * If only one screen can't sleep, sleep action is cancelled. - * [upd] iris.InstanceUI -> Now displays in console when data-id is not unique. - * [new] self.DestroyUI() -> Remove a UI from the DOM tree and all its references. - * [new] self.DestroyAllUIs() -> Remove all UIs from a container. - * [new] self.Destroy() -> new Lifecycle function is called when a UI is destroyed. - * [new] self.$Get() -> shows error message when element isn't found - * [new] iris.screen.Destroy() -> Remove a created screen completely - * [rmv] iris.screen.Add() -> Now you can use self.AddScreen() - * [new] _AbstractScreen.AddScreen() -> Screens only can be registered inside of screens - * [new] iris.screen.WelcomeScreen() -> Now the applications must implement this entry point - * [rmv] The last parameter of self.InstanceUI(p_id,p_js,p_settings,p_$tmpl) -> you can't instance UI outside its own templates - * [rmv] The last parameter of self.$Get(p_id,p_$tmpl) -> you can't get elements outside its own templates - * [fix] Small code refactoring and fixed bugs. - * [new] Tested with JQuery 1.8 - * [doc] Documentation completed. - * - * [0.4.0] 2012-07-18 -> angel.sanchez@intelygenz.com, alejandro.gonzalez@intelygenz.com - * Previous project: http://code.google.com/p/iris-js/ - * WARNING: No backward with previous versions - * - */ - -/** - * @namespace - * This JavaScript library provides different client-side optimization techniques for front construction. - * It is independent and compatible with any server-side technology: JAVA, PHP, Python, GOOGLE APP ENGINE, .NET... - * - * @version 0.4.4 - * */ -var iris = new function() { - - var _APP_VERSION = "0.4.4" - , _APP_NAME = "iris" - , _JQ_MIN_VER = 1.5 - ; - - var _Env = null - , _Log = {"error":true} - , _LogPrefix = "" - , _Screen = {} - , _ScreenUrl = {} - , _ScreenContainer = {} - , _LastScreen = {} - , _PrevHashUrl = "" - , _Global = {} - , _Local = {} - , _Locale = null - , _Config = {} - , _Lang = {} - , _Event = {} - , _Includes = {} - , _AddOns = {} - , _AppBaseUri = "" - , _LastIncludePath - , _Head = $("head").get(0) - , _Cache = true - , _HasConsole - , _GotoCancelled = false - , _WelcomeScreenCreated = false - ; - - function _Init () { - - // CHECK JQ DEPENDENCY - if( typeof jQuery === "undefined" ) { - _E( "jQuery " + _JQ_MIN_VER + "+ previous load required" ); - } - else if ( $().jquery < _JQ_MIN_VER ) { - _E( "jQuery " + $().jquery + " currently loaded, jQuery " + _JQ_MIN_VER + "+ required" ); - } - - // CHECK HASH SUPPORT - if ( !("onhashchange" in window) ) { - _E("The browser doesn't support the hashchange event"); - } - else { - $(window).bind("hashchange", _Window_OnHashChange); - } - - // CHECK CONSOLE SUPPORT - _HasConsole = (window.console && window.console.debug && window.console.warn && window.console.error); - if ( !_HasConsole && window.console && window.console.log ) { - window.console.log("advanced console debugging is not supported in this browser"); - } - }; - - - - function _AppName () { - return _APP_NAME + " v" + _APP_VERSION + " [" + _Env + "]"; - }; - - function _LogOf (p_type) { - return _Log[p_type]; - }; - - function _L(){ - if ( _HasConsole && window.console.log) { - window.console.log(_LogPrefix, arguments); - } - }; - - function _D(){ - if(_HasConsole && _LogOf("debug") ){ - window.console.debug(_LogPrefix, arguments); - } - }; - - function _W(){ - if(_HasConsole && _LogOf("warning") ){ - window.console.warn(_LogPrefix, arguments); - } - }; - - function _E(){ - if(_HasConsole && _LogOf("error") ){ - window.console.error(_LogPrefix, arguments); - } - }; - - - - function _Goto (p_hashUri) { - _PrevHashUrl = document.location.hash; - document.location.hash = p_hashUri; // Trigger hashchange event, then execute _Window_OnHashChange() - }; - - function _Window_OnHashChange () { - - if ( !_WelcomeScreenCreated ) { - iris.E("You must set the welcome screen using iris.screen.WelcomeScreen()"); - return false; - } - - if ( _GotoCancelled ) { - _GotoCancelled = false; - return false; - } - - var prev = _PrevHashUrl.split("/") - , curr = document.location.hash.split("/") - , prevPath = "" - , currPath = "" - , pathWithoutParams - , hasRemainingChilds = false - ; - - // Check if all screen.canSleep() are true - if ( _PrevHashUrl != "" ) { - for ( var f=0, F=prev.length; f curr.length ) { - - for ( var f=0, F=prev.length; f 0 ? base[0].attributes["href"].value : "/"; - _AppBaseUri = document.location.protocol + "//" + document.location.host + base; - } - return _AppBaseUri; - }; - - function _Ajax (p_settings) { - return $.ajax(p_settings); - }; - - function _AjaxSync (p_uri, p_dataType, f_success, f_error) { - $.ajax( - { url: p_uri - , dataType: p_dataType - , async: false - , cache: _Cache - , success : f_success - , error : f_error - } - ); - }; - - - - function _IncludeFiles () { - for ( var f=0,F=arguments.length; f -1 ) { - var link = document.createElement('link'); - link.rel = 'stylesheet'; - link.type = 'text/css'; - link.href = fileUrl; - _Head.appendChild(link); - } - else { - var isHtml = p_uiFile.lastIndexOf(".html") > -1; - _AjaxSync( - fileUrl - , isHtml ? "html" : "text" - , function (p_data) { - _LastIncludePath = p_uiFile; - - if ( isHtml ) { - _Includes[p_uiFile] = _LocaleParse(p_data); - } - else { - var script = document.createElement("script"); - script.language = "javascript"; - script.type = "text/javascript"; - script.text = p_data; - _Head.appendChild(script); - } - } - , function (p_err) { - delete _Includes[fileUrl]; - _E(p_err.status, "Error loading file '" + fileUrl + "'"); - } - ); - } - } - }; - - - function _ConfigLoad (p_json){ - if ( p_json ) { - $.extend(_Config, p_json); - - _GlobalLoad( _Config["global"] ); - - var currentEnv = _GetEnv(); - if ( _Config["log"] ) { - var logConfig = _Config["log"][currentEnv]; - var logs = logConfig.split(","); - for ( var logType in logs ) { - _Log[ $.trim(logs[logType]) ] = true; - } - } - - _Cache = true; - if ( _Config.hasOwnProperty("environments-nocache") ) { - var envNocache = _Config["environments-nocache"].split(","); - for ( var f=0, F=envNocache.length; f -1 ) { - _Env = _Config["environment"][p]; - break; - } - } - if ( !_Env ) { - _Env = "pro"; - } - _LogPrefix = "[" + _Env + "]"; - } - return _Env; - } - }; - - function _GlobalLoad(p_hash){ - $.extend(_Global, p_hash); - return _Global; - }; - - function _GlobalData (p_label, p_value){ - if ( p_label && p_value !== undefined ) { - _Global[p_label] = p_value; - } - else if ( p_label ) { - return _Global[p_label]; - } - else { - return _Global; - } - }; - - function _LocalLoad(p_hash){ - $.extend(_Local, p_hash); - return _Local; - }; - - function _LocalData(p_label, p_value){ - if ( p_label && p_value !== undefined ) { - _Local[p_label][_GetEnv()] = p_value; - } - else if ( p_label ) { - return _Local[p_label][_GetEnv()]; - } - else { - return _Local; - } - }; - - - // - // EVENT - // - function _FindEvent(p_eventName, f_func){ - var events = _Event[p_eventName]; - if ( events ) { - for ( var f=0, F=events.length; f -1 ){ - var labels = p_label.split("."); - var f,F=labels.length; - for(f=0; f= 0) ? settings["formatPos"] : settings["formatNeg"]; - - var decimal = val % 1; - var num = String( Math.abs(val-decimal) ); - - decimal = String(Math.abs(decimal).toFixed(settings["precision"])) - decimal = decimal.substr(2); - - for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) { - num = num.substring(0, num.length - (4 * i + 3)) + settings["thousand"] + num.substring(num.length - (4 * i + 3)); - } - - return format.replace("n", num + settings["decimal"] + decimal ); - }; - - function _DateFormat (p_date, p_format) { - if ( !p_format ) { - p_format = _GetRegionalSetting("dateFormat"); - } - - if ( typeof p_date !== "object" ) { - p_date = new Date(Number(p_date)) - } - - var dateFormat = ""; - for (var f=0, F=p_format.length; f 12) ? "p.m." : "a.m."; - case "A": - return (p_date.getHours() > 12) ? "PM" : "AM"; - case "U": - return Math.floor(p_date.getTime() * 0.001); - default: - return p_formatChar; - } - }; - - var _Regional = { - "en-US" : { - dayNames : ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"] - ,monthNames : ["January","February","March","April","May","June","July","August","September","October","November","December"] - ,dateFormat : "m/d/Y h:i:s" - ,currency : { - formatPos : "n" - ,formatNeg : "(n)" - ,decimal : "." - ,thousand : "," - ,precision : 2 - } - } - ,"es-ES" : { - dayNames : ["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"] - ,monthNames : ["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"] - ,dateFormat : "d/m/Y H:i:s" - ,currency : { - formatPos : "n" - ,formatNeg : "-n" - ,decimal : "," - ,thousand : "." - ,precision : 2 - } - } - }; - - function _AddRegional (p_locale, p_regional) { - if ( !p_regional.hasOwnProperty("dayNames") - || !p_regional.hasOwnProperty("monthNames") - || !p_regional.hasOwnProperty("dateFormat") - || !p_regional.hasOwnProperty("currency") - || !p_regional["currency"].hasOwnProperty("formatPos") - || !p_regional["currency"].hasOwnProperty("formatNeg") - || !p_regional["currency"].hasOwnProperty("decimal") - || !p_regional["currency"].hasOwnProperty("thousand") - || !p_regional["currency"].hasOwnProperty("precision") - ) { - iris.E("Regional '" + p_locale + "' has invalid format ", p_regional); - } - else { - _Regional[p_locale] = p_regional; - } - }; - - /** - * @class - * Provide mechanism to store and retrieve settings values. - */ - function _Settable () { - - this.__Setting__ = null; - - /** - * Set multiple component settings. - * You can access to this values using {@link iris-_Settable#Setting}. - * @function - * @example - * - * self.Settings({ - * "min" : 0 - * ,"label" : "example" - * }); - */ - this.Settings = function (p_settings) { - return $.extend(this.__Setting__, p_settings); - }; - - /** - * Set or get a single component setting. - * @function - * @example - * - * var label = self.Setting("label"); // Get setting value - * - * self.Setting("label", "example"); // Set setting value - */ - this.Setting = function (p_label, p_value) { - if ( p_value === undefined ) { - if ( !this.__Setting__.hasOwnProperty(p_label) ) { - iris.W("The setting ", p_label, " is not in ", this.__Setting__, this); - } - return this.__Setting__[p_label]; - } - else { - this.__Setting__[p_label] = p_value; - } - }; - }; - - /** - * @class - * Abstract component for UIs / Screens extending. - * Common properties and functions. - */ - function _AbstractComponent () { - this.TEMPLATE_APPEND = "append"; - this.TEMPLATE_REPLACE = "replace"; - this.TEMPLATE_PREPEND = "prepend"; - - this.__$Tmpl__ = null; - this.__Id__ = null; - this.__UIComponents__ = null; - this.__$Container__ = null; - this.__IsSleeping__ = null; - this.__FileJs__ = null; - this.__FileTmpl__ = null; - - this.__Sleep__ = function () { - for ( var f=0, F=this.__UIComponents__.length; f < F; f++ ) { - this.__UIComponents__[f].__Sleep__(); - } - this.__IsSleeping__ = true; - this.Sleep(); - }; - - this.__Awake__ = function (p_params) { - for ( var f=0, F=this.__UIComponents__.length; f < F; f++ ) { - this.__UIComponents__[f].__Awake__(); - } - this.__IsSleeping__ = false; - this.Awake(p_params); - }; - - this.__Destroy__ = function () { - if ( !this.__IsSleeping__ ) { - this.__Sleep__(); - } - - for ( var f=0, F=this.__UIComponents__.length; f < F; f++ ) { - this.__UIComponents__[f].__Destroy__(); - } - this.__UIComponents__ = null; - this.Destroy(); - }; - - this.__Template__ = function (p_htmlUrl, p_params, p_mode) { - this.__FileTmpl__ = p_htmlUrl; - - if ( typeof p_htmlUrl == "undefined" ) { - this.__$Tmpl__ = this.__$Container__; - return this.__$Tmpl__; - } - - iris.Include(p_htmlUrl); - - var tmplHtml = p_params ? _TemplateParse(_Includes[p_htmlUrl], p_params, p_htmlUrl) : _Includes[p_htmlUrl]; - var $tmpl = $(tmplHtml); - - this.__$Tmpl__ = $tmpl; - if ( $tmpl.size() > 1 ) { - iris.E("Template '" + p_htmlUrl + "' must have only one root node"); - } - - switch ( p_mode ) { - case this.TEMPLATE_APPEND: - this.__$Container__.append($tmpl); - break; - case this.TEMPLATE_REPLACE: - this.__$Container__.replaceWith($tmpl); - break; - case this.TEMPLATE_PREPEND: - this.__$Container__.prepend($tmpl); - break; - default: - iris.E("Unknown template mode '" + p_mode + "'"); - } - - }; - - // Check if the template is set (https://github.com/intelygenz/iris/issues/19) - this.__CheckTmpl__ = function () { - if ( this.__$Tmpl__ == null ) { - iris.E("You must set a template using self.Template() in '" + this.__FileJs__ + "'"); - return undefined; - } - }; - - /** - * Show the template object. - * If the component is a screen, this is called automatically - * after self.Awake() when iris navigates. - * - * See {@link iris.Goto} for more details. - * @function - */ - this.Show = function () { - this.__CheckTmpl__(); - - this.__$Tmpl__.show(); - }; - - /** - * Hide the template object. - * If the component is the current screen, this is called automatically - * after self.Sleep() when iris navigates to other screen. Is called too - * when a new screen is created. - * - * See {@link iris.Goto} for more details. - * @function - */ - this.Hide = function () { - this.__CheckTmpl__(); - - this.__$Tmpl__.hide(); - }; - - - - /** - * Find a JQuery object, using its data-id attribute, in the template. - * The template must be defined using self.Template().
    - * The data-id must be unique in the template. - * - * @function - * @param {String} [p_id] Element data-id value, if no set return root element (optional) - * @example - * - * var $label = self.$Get("span_label"); - * - * var $root = self.$Get(); - */ - this.$Get = function (p_id) { - this.__CheckTmpl__(); - - if ( p_id ) { - var - id = "[data-id=" + p_id + "]" - , filter = this.__$Tmpl__.filter(id) - , $element = null - ; - - if ( filter.length > 0 ) { - $element = filter; - } - else { - var find = this.__$Tmpl__.find(id); - if ( find.size() > 0 ) { - $element = find; - } - } - - if ( $element == null ) { - iris.E("[data-id=" + p_id + "] not found in '" + this.__FileTmpl__ + "' used by '" + this.__FileJs__ + "'"); - return undefined; - } - else if ( $element.size() > 1 ) { - iris.E("[data-id=" + p_id + "] must be unique in '" + this.__FileTmpl__ + "' used by '" + this.__FileJs__ + "'"); - return undefined; - } - return $element; - } - - return this.__$Tmpl__; - }; - - /** - * Create a new UI component instance. - * - * The created component is registered into the parent screen or UI, - * so you must use {@link iris-_AbstractComponent#DestroyUI} in order to remove it. - * - * The component is added to p_id container or replace it. - * See {@link iris-_AbstractUI#TemplateMode} for more details. - * - * @function - * @param {String} p_id Container data-id - * @param {String} p_jsUrl UI file path - * @param {Object} [p_uiSettings] UI Settings is optional - * @param {Constant} [p_templateMode] Use self.TEMPLATE_APPEND, self.TEMPLATE_PREPEND, the default mode isself.TEMPLATE_REPLACE (optional) - * @example - * - * self.InstanceUI("custom_ui", "custom_ui.js"); - * - * self.InstanceUI("btn_ok", "button.js", {"label":"OK","ico":"accept"}); - * - * self.InstanceUI("btn_ok", "button.js", {"label":"example"}, self.TEMPLATE_PREPEND); - */ - this.InstanceUI = function (p_id, p_jsUrl, p_uiSettings, p_templateMode) { - var $container = this.$Get(p_id); - if ( $container.size() == 1 ) { - var uiInstance = _InstanceUI($container, $container.data("id"), p_jsUrl, p_uiSettings, p_templateMode); - this.__UIComponents__[this.__UIComponents__.length] = uiInstance; - return uiInstance; - } - }; - - /** - * Remove a child UI component completely previously created using {@link self.InstanceUI}. - * Remove parent references. - * @function - * @param {UI} p_ui UI to be removed - * @example - * - * var customUI = self.InstanceUI("custom_ui", "custom_ui.js"); - * self.DestroyUI(customUI); - */ - this.DestroyUI = function (p_ui) { - for (var f=0, F=this.__UIComponents__.length; f < F; f++) { - if (this.__UIComponents__[f] == p_ui) { - this.__UIComponents__.splice(f, 1); - p_ui.__Destroy__(); - p_ui.$Get().remove(); - break; - } - } - }; - - /** - * Remove all UI components from a container. - * The UIs must be previously created using {@link self.InstanceUI}.
    - * Remove parent references. - * @function - * @param {String|JQuery} p_idOrJq UI Container data-id or JQuery object - * @example - * self.DestroyAllUIs("container"); - * - * self.DestroyAllUIs($container); - */ - this.DestroyAllUIs = function (p_idOrJq) { - var contSelector = typeof p_idOrJq === "string" ? "[data-id=" + p_idOrJq + "]" : p_idOrJq.selector; - var ui; - for (var f=0, F=this.__UIComponents__.length; f < F; f++) { - ui = this.__UIComponents__[f]; - - if (ui.__$Container__.selector == contSelector) { - this.__UIComponents__.splice(f--, 1); - F--; - - ui.__Destroy__(); - ui.$Get().remove(); - } - } - }; - - /** - * Get the component container. - * If the component is a screen, the container is - * set using {@link iris-_AbstractScreen#AddScreen} function. - * Otherwise if the component is a UI, the container is - * set using {@link iris-_AbstractComponent#InstanceUI} function. - * @function - * @example - * - * var screenContainer = self.$Container(); - */ - this.$Container = function () { - return this.__$Container__; - }; - - // To override functions - - /** - * Called automatically only once at the creation phase. - * Function to override. - * @function - */ - this.Create = function () {}; - - /** - * Called automatically when a screen is showed. - * Function to override. - * @function - */ - this.Awake = function () {}; - - /** - * Called automatically when a screen is going to sleep, before {@link iris-_AbstractComponent#Sleep}. - * If return false, the self.Sleep() function is not called. - * @function - */ - this.CanSleep = function () { - return true; - }; - - /** - * Called automatically when a screen is hidden. - * Function to override. - * @function - */ - this.Sleep = function () {}; - - /** - * Called automatically by {@link iris-_AbstractComponent#DestroyUI}. - * Function to override. - */ - this.Destroy = function () {}; - }; - _AbstractComponent.prototype = new _Settable(); - - /** - * @class - * Abstract class for AddOn extending. - * Common AddOn functions and properties. - */ - function _AbstractAddOn () { - this.__Components__ = null; - - /** - * Add a array of UIs to the AddOn. - * It is called automatically from {@link iris.ApplyAddOn}. - * @param p_uis {Array} Array of UIs - * @function - */ - this.AddAll = function (p_uis) { - for (var f=0, F=p_uis.length; fself.TEMPLATE_REPLACE. - * Use this function before call {@link iris-_AbstractUI.Template}. - * @function - * @example - * self.TemplateMode(self.TEMPLATE_APPEND); - * self.Template("tmpl.html"); - */ - this.TemplateMode = function (p_mode) { - this.__TemplateMode__ = p_mode; - }; - - /** - * Create the component template. - * Translate multilanguage values, draw parameters, - * create DOM elements and insert into container or replace it. - * - * See {@link iris-_AbstractUI.TemplateMode}. - * @function - * @example - * self.TemplateMode(self.TEMPLATE_APPEND); - * self.Template("tmpl.html", {"age":23}); - */ - this.Template = function (p_htmlUrl, p_params) { - this.__Template__(p_htmlUrl, p_params, this.__TemplateMode__); - }; - }; - _AbstractUI.prototype = new _AbstractComponent(); - - /** - * @class - * Abstract class for screen extending. - * Common screen functions and properties. - */ - function _AbstractScreen () { - - /** - * Create the screen template. - * Translate multilanguage values, draw parameters, - * create DOM elements and it is insert into the screen container. - * @function - * @example - * self.Template("tmpl.html", {"name":"Jonh"}); - */ - this.Template = function (p_htmlUrl, p_params) { - this.__Template__(p_htmlUrl, p_params, this.TEMPLATE_APPEND); - }; - - /** - * Add a new screen. - * You can navigate to this using iris.Goto. - * See {@link iris.Goto} for more details. - * @function - * @param {JQuery} p_containerId Screen container data-id - * @param {String} p_screenPath Screen URL path - * @param {String} p_jsUrl Screen controller - * @example - * self.AddScreen( - * "screens" - * , "#books/edit" - * , "screen/book_edit.js" - * ); - * - * iris.Goto("#books/edit"); - */ - this.AddScreen = function _ScreenAdd (p_containerId, p_screenPath, p_jsUrl) { - var $cont = this.$Get(p_containerId); - - if ( $cont.data("screen_context") === undefined ) { - - // Set a unique screen context id to the screen container - // like: #path/to/screen|containerid - $cont.data("screen_context", this.__Id__ + "|" + p_containerId); - } - - _ScreenUrl[p_screenPath] = p_jsUrl; - _ScreenContainer[p_screenPath] = $cont; - }; - - }; - _AbstractScreen.prototype = new _AbstractComponent(); - - function _Deserialize (p_$form, p_data) { - var element, tag, value; - for ( name in p_data ) { - element = p_$form.find('[name="' + name + '"]'); - if ( element.length > 0 ) { - tag = element[0].tagName.toLowerCase(); - value = p_data[name]; - switch (tag) { - case "select": - case"textarea": - $(element).val(value); - break; - case "input": - switch (tag) { - case "checkbox": - if (value) { - element.attr("checked", "checked"); - } - break; - case "radio": - element.filter('[value="'+value+'"]').attr("checked", "checked"); - break; - default: - element.val(value); - } - } - } - }; - }; - - function _Serialize (p_$form) { - var json = {}; - $.map(p_$form.serializeArray(), function(p_obj, p_index){ - json[ p_obj['name'] ] = p_obj['value']; - }); - return json; - }; - - - /** @namespace Screen management: Add a new screen, ... */ - this.screen = {}; - - /** @namespace Event management: Add/remove listeners and trigger events. */ - this.event = {}; - - /** @namespace Application configuration: Load configuration data and environments. */ - this.config = {}; - - /** @namespace User interface: Work with HTML elements. */ - this.ui = {}; - - /** @namespace Asynchronous HTTP request and URL base. */ - this.net = {}; - - /** @namespace Global configurations management */ - this.global = {}; - - /** @namespace Environment configurations management */ - this.local = {}; - - /** @namespace Multilanguage : Load translation files, get translated text, ...*/ - this.lang = {}; - - /** @namespace Various utilities: Date formatting, serialization, ... */ - this.util = {}; - - /** - * Load the configuration JSON. - * You can use iris without load this file. - * @function - * @param {JSON} config Contains information about environments, global and environment settings, loglevel logs ... - * @example - * iris.config.Load({ - * "environment-default" : "pro" - *,"environments-nocache" : "dev" - * ,"environment": { - * "localhost" : "dev" - * ,"www.example.com" : "pro" - * } - * ,"log": { - * "dev": "debug,warning,error" - * ,"pro" : "debug,error" - * } - * ,"global": { - * "global-variable" : "example" - * } - * ,"local": { - * "local-variable" : { - * "dev" : "example-dev" - * ,"pro" : "example-pro" - * } - * } - * }); - * - */ - this.config.Load = _ConfigLoad; - - /** - * Set or get the current environment. - * If a configuration file is loaded, iris try set this value using - * the current URL and the defined environments. - * If not match anything use "environment-default" - * The local variables depends of this value. - * @function - * @param {String} [p_env] Environment name (optional) - * @example - * Example: URL=http://localhost:8080/admin - * Configuration file: - * ... - * "environment": { - * "localhost" : "dev" - * ,"www.example.com" : "pro" - * } - * ... - * - * iris.config.Env(); // return "dev" - * - * iris.config.Env("pro"); // set environment to "pro" - */ - this.config.Env = _GetEnv; - - /** - * Add global configuration values​​. - * If you load a configuration file, automatically load the object "global" ({@link iris.config.Load}). - * See {@link iris.global.Data} for more details. - * @function - * @param {Object} p_hash Object like: { "name" : value, ... } - * @example - * iris.global.Load({"global-variable" : "value"}); - * iris.global.Data("global-variable"); // return "value" - */ - this.global.Load = _GlobalLoad; - - /** - * Get or set the value of a global configuration variable. - * If label and value are not specified then return an object with all values. - * See {@link iris.global.Load} for more details. - * @function - * @param {String} [p_label] Variable label (optional) - * @param {String} [p_value] Variable value (optional) - * @example - * iris.global.Data("global-variable"); - */ - this.global.Data = _GlobalData; - - /** - * Add configuration values that depends on current environment. - * If you load a configuration file, automatically load the object "local" ({@link iris.config.Load}). - * See {@link iris.local.Data} for more details. - * @function - * @param {Object} p_hash Object like: { "name" : {"environment" : value, ... }, ... } - * @example - * iris.global.Load({"global-variable" : "value"}); - * iris.global.Data("global-variable"); // return "value" - */ - this.local.Load = _LocalLoad; - - /** - * Get or set the value of a configuration variable that depends on current environment. - * If label and value are not specified then return an object with all values. - * See {@link iris.local.Load} for more details. - * @function - * @param {String} [p_label] Variable label (optional) - * @param {String} [p_value] Variable value (optional) - * @example - * iris.local.Data({ - * "local-variable" : { - * "dev" : "example-dev" - * ,"pro" : "example-pro" - * } - * }); - * - * // If environemnt="dev" then return "example-dev" - * iris.local.Data("local-variable"); - */ - this.local.Data = _LocalData; - - /** - * Add translation texts to a locale. - * See {@link iris.lang.Get} for more details. - * @function - * @param {String} p_locale Locale - * @param {Object} p_data Object like { "LABEL" : "value", GROUP : { "LABEL" : "value", ... }, ... } - * @example - * iris.lang.Load( "es-ES" - * ,{ "LABEL":"etiqueta" - * ,{"GROUP":{ - * "NESTED_VALUE" : "valor anidado" - * } - * }); - * - * iris.lang.Get("LABEL"); - * iris.lang.Get("GROUP.NESTED_VALUE"); - */ - this.lang.Load = _LocaleLoad; - - /** - * Load remote translation texts into a locale. - * @function - * @param {String} p_locale Locale - * @param {String} p_uri URL to load - * @param {Object} p_settings {@code {"success" : function (p_locale) {}, "error" : function (p_locale) {}} } - * @example - * iris.lang.LoadFrom( - * "es-ES" - * , "http://example.com/lang" - * , {"success":_OnLangLoad} - * ); - */ - this.lang.LoadFrom = _LangLoadFrom; - - /** - * Get a translation text according to the Locale. - * You can access to nested values using dot notation. - * See {@link iris.local.Locale} for more details. - * @function - * @param {String} p_label Label - * @example - * iris.lang.Get("LABEL"); - * - * iris.lang.Get("GROUP.LABEL"); - */ - this.lang.Get = _LangGet; - - /** - * Set or get the current locale. - * @function - * @param {String} [p_locale] Locale (optional) - * @example - * var locale = iris.lang.Locale(); - * iris.lang.Locale("es-ES"); - */ - this.lang.Locale = _LocaleGet; - - /** - * Safe debug traces. - * @function - * @param {arguments} - * @example - * iris.L("text", variable); - */ - this.L = _L; - - /** - * Safe debug traces. If debug-level is active for the current environment then print traces. - * See {@link iris.config.Load} for more details. - * @function - * @param {arguments} - * @example - * iris.D("text", variable); - */ - this.D = _D; - - /** - * Safe warning traces. If warning-level is active for the current environment then print traces. - * @function - * @see {@link iris.config.Load} - * @param {arguments} - * @example - * iris.W("text", variable); - */ - this.W = _W; - - /** - * Safe error traces. If error-level is active for the current environment then print traces. - * See {@link iris.config.Load} for more details. - * @function - * @param {arguments} - * @example - * iris.E("text", variable); - */ - this.E = _E; - - /** - * Add an event listener. - * See {@link iris.event.Notify} and {@link iris.event.Remove} for more details. - * @function - * @param {String} p_eventName Event identifier - * @param {Function} f_func Event listener - * @example - * iris.event.Subscribe("user_select", _OnUserSelect); - */ - this.event.Subscribe = _EventSubscribe; - - /** - * Trigger an event. - * See {@link iris.event.Subscribe} and {@link iris.event.Remove} for more details. - * @function - * @param {String} p_eventName Event identifier - * @param {Object} p_data Event paramater - * @example - * iris.event.Notify( - * "user_select" - * , {"user_id" : 123, "name" : "John"} - * ); - */ - this.event.Notify = _EventNotify; - - /** - * Remove an event listener. - * See {@link iris.event.Subscribe} and {@link iris.event.Notify} for more details. - * @function - * @param {String} p_eventName Event identifier - * @param {String} f_func Event listener - * @example - * iris.event.Remove("user_select", _OnUserSelect); - */ - this.event.Remove = _EventRemove; - - /** - * Get or set the application base URL. - * Use the <base > HTML tag if are defined. - * @function - * @param {String} [p_baseUri] URL base (optional) - * @example - * // Current URL = http://www.example.com/admin/example/path?a=1 - * iris.net.BaseUri(); // return http://www.example.com/ - */ - this.net.BaseUri = _BaseUri; - - /** - * Do an Ajax request. - * Accepts the same parameters as jQuery.ajax() - * @function - * @see JQuery Ajax. - * @example - * iris.net.Ajax( - * { "url" : "/s/myservice" - * , "type" : "GET" - * } - * ); - */ - this.net.Ajax = _Ajax; - - /** - * Register a Screen object. - * It must appear at the beginning of the screen file. - * @function - * @param {Function} f_screen Screen class - * @example - * iris.Screen( - * function (self) { - * self.Create = function () { - * } - * - * self.Awake = function (p_params) { - * } - * - * self.Sleep = function () { - * } - * } - * ); - */ - this.Screen = _CreateScreen; - - /** - * Register an UI object. - * It must appear at the beginning of the screen file. - * @function - * @param {Function} f_ui UI class - * @example - * iris.UI( - * function (self) { - * self.Create = function (p_domAttr, p_settings) { - * } - * - * self.Awake = function (p_params) { - * } - * - * self.Sleep = function () { - * } - * } - * ); - */ - this.UI = _CreateUI; - - /** - * Set the initial screen. - * This screen is registered as the root screen - * and automatically is shown. - * @param {String} p_jsUrl Screen controller - * @function - * @example - * iris.screen.WelcomeScreen("screen/main.js"); - */ - this.screen.WelcomeScreen = _WelcomeScreen; - - /** - * Destroy a created screen. - * Free screen and its UIs memory. - * Call in cascade all Sleep() and Destroy() functions for its UI childs. - * @function - * @param {String} p_screenPath Screen URL path - * @example - * iris.screen.Destroy("#books/edit"); - */ - this.screen.Destroy = _DestroyScreen; - - /** - * Copy all data-* attributes to an object. - * Remove the "data-" prefix from attribute names. - * @function - * @param {JQuery} p_$obj Object to merge - * @example - * var $obj = $("<div data-id='test' data-class='myclass'></div>") - * var params = iris.ui.JqToHash($obj); - * // return: {"id" : "test", "class" : "myclass"} - */ - this.ui.JqToHash = _JqToHash; - - /** - * Set the object values to a JQuery object. - * @function - * @param {Object} p_hash Object with source values - * @param {JQuery} p_$obj JQuery object target - * @param {String[]} [p_filter] Indicates that values ​​should be copied (optional) - * @example - * iris.ui.HashToJq( - * { "class":"myclass", "other":"other_value" } - * , $obj - * , ["class"] - * ); // Set the $obj attribute "class" - */ - this.ui.HashToJq = _HashToJq; - - /** - * Include static resources dynamically. - * The load is synchronous and tracks all the files included to prevent them to be included twice.
    - * You can include:
    - *
      - *
    • CSS files: style files are included by creating a link dynamically in the header of the index page.
    • - *
    • JS files: script files are included by creating a script object dynamically in the header of the index page - * and append the loaded content to it. When including javascript files you must take care of the syntax - * as including javascript file with some syntax error would produce an error when adding it to a script element.
    • - *
    - * @function - * @param {arguments} File paths - * @example - * iris.Include("app/service/myservice.js", "app/css/mycss.css"); - */ - this.Include = _IncludeFiles; - - /** - * Formats a Date object or timestamp to the specified format and according to the current locale.
    - * You can use the following special characters:

    - * a 'a.m.' or 'p.m.'
    - * A 'AM' or 'PM'
    - * b Month, textual, 3 letters, lowercase. 'jan'
    - * d Day of the month, 2 digits with leading zeros. '01' to '31'
    - * D Day of the week, textual, 3 letters. 'Fri'
    - * F Month, textual, long. 'January'
    - * h Hour, 12-hour format. '01' to '12'
    - * H Hour, 24-hour format. '00' to '23'
    - * i Minutes. '00' to '59'
    - * l Day of the week, textual, long. 'Friday'
    - * m Month, 2 digits with leading zeros. '01' to '12'
    - * M Month, textual, 3 letters. 'Jan'
    - * n Month without leading zeros. '1' to '12'
    - * s Seconds, 2 digits with leading zeros. '00' to '59'
    - * U Seconds since the Unix Epoch (January 1 1970 00:00:00 UTC)
    - * y Year, 2 digits. '99'
    - * Y Year, 4 digits. '1999'
    - * @function - * @param {Date|Timestamp} p_date Date object or timestamp (UNIX timestamp) - * @param {String} [p_format] Format string (optional) - * @example - * iris.util.DateFormat(new Date(),"ymd"); - * iris.util.DateFormat("1331954654564","d/m/y h:i:s"); // 17/03/12 04:24:14 - * iris.util.DateFormat(1331954654564); - */ - this.util.DateFormat = _DateFormat; - - - /** - * Formats a Number or String to Currency using the current locale defined at {@link iris.Regional}
    - * @function - * @param {Number|String} p_value Number or String number - * @example - * regional = en-US - * iris.util.Currency(1234.56); -> $ 1,234.56 - * iris.util.Currency("123456789"); -> $ 123,456,789 - * regional = es-ES - * iris.util.Currency(1234.56); -> 1,234.56 € - * iris.util.Currency("123456789"); -> 123,456,789 € - */ - this.util.Currency = _ParseCurrency; - - - /** - * Fill all form component with data. - * @function - * @param p_$form {JQuery Object} Form target - * @param p_data {Object} Object data source - * @example - * var data = {"name":"Jonh", "surname": "Doe"}; - * iris.util.Deserialize($form, data); - */ - this.util.Deserialize = _Deserialize; - - /** - * Serialize a form data to Object. - * @function - * @param p_$form - * @example - * var data = iris.util.Serialize($form); - */ - this.util.Serialize = _Serialize; - - /** - * Navigate to a screen. - * The screen must be previously added using {@link iris-_AbstractScreen#AddScreen}.
    - * You can send parameters to the target screen as ... /screen?param1=value1¶m2=value2/ ..., - * remember apply encodeURIComponent() to the parameter values.
    - * @function - * @param p_hashUri {String} Hash URL - * @example - * - * iris.Goto("#home/section/subsection"); - * - * // Call with screen parameters - * iris.Goto("#home/section?id=5&name=example%20name/subsection"); - * - * // Remember encode param values - * var email = encodeURIComponent("user@example.com"); - * iris.Goto("#home/section?email=" + email); - */ - this.Goto = _Goto; - - /** - * Register a AddOn object. - * It must appear at the beginning of the AddOn file. - * @function - * @param {Function} f_addOn AddOn Class - * @example - * iris.AddOn( - * function (self) { - * self.Create = function ( p_uis ) { - * } - * ... - * } - * ); - */ - this.AddOn = _CreateAddOn; - - /** - * Apply a AddOn to a group of UI components or single UI. - * @function - * @param p_id {String} AddOn identifier - * @param p_uis {Object|Array} UI Component/s - * @example - * var customUI = self.InstanceUI("input", "input.js"); - * iris.ApplyBE("validator.js", customUI); - * - * var otherCustomUI = self.InstanceUI("input", "input.js"); - * iris.ApplyAddOn("validator.js", [customUI, otherCustomUI]); - * - */ - this.ApplyAddOn = _ApplyAddOn; - - /** - * Specify a new regional or change the actuals regionals to format dates and currencies. - * You must set a valid regional object with all properties: 'dayNames', 'monthNames', etc...
    - * Iris has two predefined regionals: - *
    	"en-US" : {
    -	 *		 dayNames : ["Sunday","Monday","Tuesday"
    -	 *				,"Wednesday","Thursday","Friday","Saturday"]
    -	 *		,monthNames : ["January","February","March"
    -	 *				,"April","May","June","July"
    -	 *				,"August","September","October"
    -	 *				,"November","December"]
    -	 *		,dateFormat : "m/d/Y h:i:s"
    -	 *		,currency : {
    -	 *			 formatPos : "$ n"
    -	 *			,formatNeg : "($ n)"
    -	 *			,decimal : "."
    -	 *			,thousand : ","
    -	 *			,precision : 2
    -	 *		}
    -	 *	}
    -	 *	
    -	 *	"es-ES" : {
    -	 *		 dayNames : ["Domingo","Lunes","Martes"
    -	 *			,"Miércoles","Jueves","Viernes","Sábado"]
    -	 *		,monthNames : ["Enero","Febrero","Marzo"
    -	 *			,"Abril","Mayo","Junio","Julio","Agosto"
    -	 *			,"Septiembre","Octubre","Noviembre","Diciembre"]
    -	 *		,dateFormat : "d/m/Y H:i:s"
    -	 *		,currency : {
    -	 *			 formatPos : "n"
    -	 *			,formatNeg : "-n"
    -	 *			,decimal : ","
    -	 *			,thousand : "."
    -	 *			,precision : 2
    -	 *		}
    -	 *	}
    - * @function - * @param p_locale {String} Locale identifier - * @param p_regional {Object} Regional data - * @example - * iris.Regional("custom-es_ES", { - * dayNames : ["D","L","M","M","J","V","S"] - * ,monthNames : ["Ene","Feb","Mar","Abr","May","Jun" - * ,"Jul","Ago","Sep","Oct","Nov","Dic"] - * ,dateFormat : "d/m/Y" - * ,currency : { - * formatPos : "n" - * ,formatNeg : "-n" - * ,decimal : "," - * ,thousand : "." - * ,precision : 2 - * } - * } - */ - this.Regional = _AddRegional; - - _Init(); - -}; diff --git a/js/iris-0.4.4.min.info b/js/iris-0.4.4.min.info deleted file mode 100644 index c40d375..0000000 --- a/js/iris-0.4.4.min.info +++ /dev/null @@ -1,93 +0,0 @@ -Minified using: -http://closure-compiler.appspot.com/home - -Settings: - Optimization -> Simple - Formatting -> All unchecked - -Result: - Original Size: 51.04KB (14.45KB gzipped) - Compiled Size: 13.88KB (5.06KB gzipped) - - Saved 72.82% off the original size (64.96% off the gzipped size) - -License and changelog: - -/* - * Copyright (c) 2012 Intelygenz - * All rights reserved. - * - * BSD License - * - * 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. - * 3. Neither the name of copyright holders nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "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 COPYRIGHT HOLDERS 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. - * - * Download: http://intelygenz.github.com/iris/ - * - * Creation date: 2012-01-12 - * - * [version] date -> authors - * upd|fix|new|dep|rmv - description - * - * [0.4.4] 2012-09-27 - * [new] Screen error messages when template is not set (https://github.com/intelygenz/iris/issues/19) - * [new] Prepend UI (https://github.com/intelygenz/iris/issues/21) - * [rmv] Remove currency symbol of number regional format - * [upd] self.Settings returns complete __Settings__ if don't use any parameter - * [fix] Fix asynchronous load components on Firefox when hashchange event is triggered - * [fix] Screen parameter bugs (https://github.com/intelygenz/iris/issues/9) - * - * [0.4.3] 2012-09-06 -> angel.sanchez@intelygenz.com - * [fix] Screen Context Bug (https://github.com/intelygenz/iris/issues/10) - * [fix] Load Multiple Locales Bug (https://github.com/intelygenz/iris/issues/15) - * [new] Nested properties value in Templates (https://github.com/intelygenz/iris/issues/8) - * [upd] More Descriptive Error Messages (https://github.com/intelygenz/iris/issues/12) - * [new] Specify new Regional configuration (https://github.com/intelygenz/iris/issues/17) - * [doc] Add Screen Paramaters Example (https://github.com/intelygenz/iris/issues/11) - * - * [0.4.2] 2012-09-04 -> alejandro.gonzalez@intelygenz.com, angel.sanchez@intelygenz.com - * [upd] _LocaleParse -> Now can finds variables with dot notation, eg: @@COMMON.HELLO@@. This mean that you can have nested objects in lang json files. - * [new] iris.AddOn, iris.ApplyAddOn -> Now you can define groups of UIs and extends a UI functionality - * [new] screen.CanSleep -> All screens can define a CanSleep public method that returns a boolean indicating when the screen can be leaved or not. - * If only one screen can't sleep, sleep action is cancelled. - * [upd] iris.InstanceUI -> Now displays in console when data-id is not unique. - * [new] self.DestroyUI() -> Remove a UI from the DOM tree and all its references. - * [new] self.DestroyAllUIs() -> Remove all UIs from a container. - * [new] self.Destroy() -> new Lifecycle function is called when a UI is destroyed. - * [new] self.$Get() -> shows error message when element isn't found - * [new] iris.screen.Destroy() -> Remove a created screen completely - * [rmv] iris.screen.Add() -> Now you can use self.AddScreen() - * [new] _AbstractScreen.AddScreen() -> Screens only can be registered inside of screens - * [new] iris.screen.WelcomeScreen() -> Now the applications must implement this entry point - * [rmv] The last parameter of self.InstanceUI(p_id,p_js,p_settings,p_$tmpl) -> you can't instance UI outside its own templates - * [rmv] The last parameter of self.$Get(p_id,p_$tmpl) -> you can't get elements outside its own templates - * [fix] Small code refactoring and fixed bugs. - * [new] Tested with JQuery 1.8 - * [doc] Documentation completed. - * - * [0.4.0] 2012-07-18 -> angel.sanchez@intelygenz.com, alejandro.gonzalez@intelygenz.com - * Previous project: http://code.google.com/p/iris-js/ - * WARNING: No backward with previous versions - * - */ diff --git a/js/iris-0.4.4.min.js b/js/iris-0.4.4.min.js deleted file mode 100644 index d09d77e..0000000 --- a/js/iris-0.4.4.min.js +++ /dev/null @@ -1,28 +0,0 @@ -var iris=new function(){function s(){q&&C.debug&&window.console.debug(t,arguments)}function n(){q&&C.error&&window.console.error(t,arguments)}function M(){if(!N)return iris.E("You must set the welcome screen using iris.screen.WelcomeScreen()"),!1;if(G)return G=!1;var a=u.split("/"),b=document.location.hash.split("/"),c="",d="",g,v=!1;if(""!=u)for(var h=0,w=a.length;h -b.length){h=0;for(w=a.length;ha?"0"+a:a}function ga(a,b){var c=B[e];switch(a){case "y":return String(b.getFullYear()).substring(2); -case "Y":return b.getFullYear();case "m":return c=b.getMonth()+1,r(c);case "n":return b.getMonth()+1;case "M":return c[monthNames][b.getMonth()].substring(0,3);case "b":return c[monthNames][b.getMonth()].substring(0,3).toLowerCase();case "F":return c[monthNames][b.getMonth()];case "d":return c=b.getDate(),r(c);case "D":return c[dayNames][b.getDay()].substring(0,3);case "l":return c[dayNames][b.getDay()];case "s":return c=b.getSeconds(),r(c);case "i":return c=b.getMinutes(),r(c);case "H":return c= -b.getHours(),r(c);case "h":return c=b.getHours(),r(0==c%12?12:c%12);case "a":return 12$().jquery&&n("jQuery "+$().jquery+ -" currently loaded, jQuery 1.5+ required");"onhashchange"in window?$(window).bind("hashchange",M):n("The browser doesn't support the hashchange event");q=window.console&&window.console.debug&&window.console.warn&&window.console.error;!q&&(window.console&&window.console.log)&&window.console.log("advanced console debugging is not supported in this browser")}; \ No newline at end of file diff --git a/js/iris-0.4.5.min.info b/js/iris-0.4.5.min.info deleted file mode 100644 index 327875f..0000000 --- a/js/iris-0.4.5.min.info +++ /dev/null @@ -1,51 +0,0 @@ -Copyright (c) 2012 Intelygenz - All rights reserved. - - New BSD License - - 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. - 3. Neither the name of copyright holders nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "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 COPYRIGHT HOLDERS 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. - - -Minified using: -http://closure-compiler.appspot.com/home - -Settings: - Optimization -> Simple - Formatting -> All unchecked - -Result: - Original Size: 49.99KB (13.71KB gzipped) - Compiled Size: 14.37KB (5.17KB gzipped) - - Saved 71.26% off the original size (62.28% off the gzipped size) - - -Changelog: - - [0.4.5] 2012-11-03 david.garcia@intelygenz.com, angel.sanchez@intelygenz.com - [fix] Prevent multiple calls to hashchange event handler when welcome screen calls to iris.Goto() on create phase - [upd] Code refactoring to suppress JS validation warnings. All JSHint validations whitout strict mode are passed. (http://www.jshint.com/) - [fix] DateFormat bug with month names (https://github.com/intelygenz/iris/issues/22) - [new] iris.net.CacheVersion (https://github.com/intelygenz/iris/issues/23) - [upd] self.$Get() selectors cache: improved performance & permit nested UIs diff --git a/js/iris-0.4.5.min.js b/js/iris-0.4.5.min.js deleted file mode 100644 index 110fedf..0000000 --- a/js/iris-0.4.5.min.js +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Copyright (c) 2012 Intelygenz - * @license http://directory.fsf.org/wiki/License:BSD_3Clause - * @version 0.4.5 - * */ -var iris={}; -(function(){function w(){t&&F.debug&&window.console.debug(x,arguments)}function r(){t&&F.error&&window.console.error(x,arguments)}function Q(){if(!R)return iris.E("You must set the welcome screen using iris.screen.WelcomeScreen()"),!1;iris.event.Notify(iris.event.BEFORE_NAVIGATION);if(L)return L=!1;var a=y.split("/"),b=document.location.hash.split("/"),c="",d="",h,z=!1,g;if(""!==y)for(g=0;gb.length)for(g=0;ga?"0"+a:a}function ha(a,b){var c= -E[f];switch(a){case "y":return String(b.getFullYear()).substring(2);case "Y":return b.getFullYear();case "m":return c=b.getMonth()+1,v(c);case "n":return b.getMonth()+1;case "M":return c.monthNames[b.getMonth()].substring(0,3);case "b":return c.monthNames[b.getMonth()].substring(0,3).toLowerCase();case "F":return c.monthNames[b.getMonth()];case "d":return c=b.getDate(),v(c);case "D":return c.dayNames[b.getDay()].substring(0,3);case "l":return c.dayNames[b.getDay()];case "s":return c=b.getSeconds(), -v(c);case "i":return c=b.getMinutes(),v(c);case "H":return c=b.getHours(),v(c);case "h":return c=b.getHours(),v(0===c%12?12:c%12);case "a":return 12$().jquery&&r("jQuery "+$().jquery+" currently loaded, jQuery 1.5+ required");t=window.console&&window.console.debug&&window.console.warn&&window.console.error;!t&&(window.console&&window.console.log)&&window.console.log("advanced console debugging is not supported in this browser")})(); \ No newline at end of file diff --git a/jsdoc-toolkit/README.txt b/jsdoc-toolkit/README.txt deleted file mode 100644 index 3782da8..0000000 --- a/jsdoc-toolkit/README.txt +++ /dev/null @@ -1,183 +0,0 @@ -====================================================================== - -DESCRIPTION: - -This is the source code for JsDoc Toolkit, an automatic documentation -generation tool for JavaScript. It is written in JavaScript and is run -from a command line (or terminal) using Java and Mozilla's Rhino -JavaScript runtime engine. - -Using this tool you can automatically turn JavaDoc-like comments in -your JavaScript source code into published output files, such as HTML -or XML. - -For more information, to report a bug, or to browse the technical -documentation for this tool please visit the official JsDoc Toolkit -project homepage at http://code.google.com/p/jsdoc-toolkit/ - -For the most up-to-date documentation on JsDoc Toolkit see the -official wiki at http://code.google.com/p/jsdoc-toolkit/w/list - -====================================================================== - -REQUIREMENTS: - -JsDoc Toolkit is known to work with: -java version "1.6.0_03" -Java(TM) SE Runtime Environment (build 1.6.0_03-b05) -on Windows XP, -and java version "1.5.0_19" -Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_19-b02-304) -on Mac OS X 10.5. - -Other versions of java may or may not work with JsDoc Toolkit. - -====================================================================== - -USAGE: - -Running JsDoc Toolkit requires you to have Java installed on your -computer. For more information see http://www.java.com/getjava/ - -Before running the JsDoc Toolkit app you should change your current -working directory to the jsdoc-toolkit folder. Then follow the -examples below, or as shown on the project wiki. - -On a computer running Windows a valid command line to run JsDoc -Toolkit might look like this: - -> java -jar jsrun.jar app\run.js -a -t=templates\jsdoc mycode.js - -On Mac OS X or Linux the same command would look like this: - -$ java -jar jsrun.jar app/run.js -a -t=templates/jsdoc mycode.js - -The above assumes your current working directory contains jsrun.jar, -the "app" and "templates" subdirectories from the standard JsDoc -Toolkit distribution and that the relative path to the code you wish -to document is "mycode.js". - -The output documentation files will be saved to a new directory named -"out" (by default) in the current directory, or if you specify a --d=somewhere_else option, to the somewhere_else directory. - -For help (usage notes) enter this on the command line: - -$ java -jar jsrun.jar app/run.js --help - -More information about the various command line options used by JsDoc -Toolkit are available on the project wiki. - -====================================================================== - -RUNNING VIA SHELL SCRIPT - -Avi Deitcher has contributed the file jsrun.sh with the following usage notes: - -A script to simplify running jsdoc from the command-line, especially when -running from within a development or build environment such as ant. - -Normally, to run jsdoc, you need a command-line as the following: -java -Djsdoc.dir=/some/long/dir/path/to/jsdoc -jar -/some/long/dir/path/to/jsdoc/jsrun.jar /some/long/dir/path/to/jsdoc/app/run.js --t=template -r=4 /some/long/dir/path/to/my/src/code - -This can get tedious to redo time and again, and difficult to use from within a build environment. - -To simplify the process, jsrun.sh will automatically run this path, as well as passing through any arguments. - -Usage: jsrun.sh - -All will be passed through. -Additionally, jsrun.sh will take the following actions: -1) If the environment variable JSDOCDIR is set, it will add -"-Djsdoc.dir=$JSDOCDIR" to the command-line -2) If the environment variable JSDOCTEMPLATEDIR is set, it will add -"-Djsdoc.template.dir=$JSDOCTEMPLATEDIR" to the command-line -3) java with the appropriate path to jsrun.jar and run.js will be instantiated - -If not variables are set, it is assumed that the path to jsrun.jar and app/ is in the current working directory. - -Example: -# jsrun.sh ./src/ -Assuming JSDOCDIR=/some/path/to/my/jsdoc will cause the following command to -execute: -java -Djsdoc.dir=/some/path/to/my/jsdoc -jar /some/path/to/my/jsdoc/jsrun.jar -/some/path/to/my/jsdoc/app/run.js ./src/ - -====================================================================== - -TESTING: - -To run the suite of unit tests included with JsDoc Toolkit enter this -on the command line: - -$ java -jar jsrun.jar app/run.js -T - -To see a dump of the internal data structure that JsDoc Toolkit has -built from your source files use this command: - -$ java -jar jsrun.jar app/run.js mycode.js -Z - -====================================================================== - -LICENSE: - -JSDoc.pm - -This project is based on the JSDoc.pm tool, created by Michael -Mathews and Gabriel Reid. More information on JsDoc.pm can -be found on the JSDoc.pm homepage: http://jsdoc.sourceforge.net/ - -Complete documentation on JsDoc Toolkit can be found on the project -wiki at http://code.google.com/p/jsdoc-toolkit/w/list - -Rhino - -Rhino (JavaScript in Java) is open source and licensed by Mozilla -under the MPL 1.1 or later/GPL 2.0 or later licenses, the text of -which is available at http://www.mozilla.org/MPL/ - -You can obtain the source code for Rhino from the Mozilla web site at -http://www.mozilla.org/rhino/download.html - -JsDoc Toolkit is a larger work that uses the Rhino JavaScript engine -but is not derived from it in any way. The Rhino library is used -without modification and without any claims whatsoever. - -The Rhino Debugger - -You can obtain more information about the Rhino Debugger from the -Mozilla web site at http://www.mozilla.org/rhino/debugger.html - -JsDoc Toolkit is a larger work that uses the Rhino Debugger but -is not derived from it in any way. The Rhino Debugger is used -without modification and without any claims whatsoever. - -JsDoc Toolkit - -All code specific to JsDoc Toolkit are free, open source and licensed -for use under the X11/MIT License. - -JsDoc Toolkit is Copyright (c)2009 Michael Mathews - -This program is free software; you can redistribute it and/or -modify it under the terms below. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: The above copyright notice and this -permission notice must be included in all copies or substantial -portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/jsdoc-toolkit/app/frame.js b/jsdoc-toolkit/app/frame.js deleted file mode 100644 index 1beb405..0000000 --- a/jsdoc-toolkit/app/frame.js +++ /dev/null @@ -1,33 +0,0 @@ -IO.include("frame/Opt.js"); -IO.include("frame/Chain.js"); -IO.include("frame/Link.js"); -IO.include("frame/String.js"); -IO.include("frame/Hash.js"); -IO.include("frame/Namespace.js"); -//IO.include("frame/Reflection.js"); - -/** A few helper functions to make life a little easier. */ - -function defined(o) { - return (o !== undefined); -} - -function copy(o) { // todo check for circular refs - if (o == null || typeof(o) != 'object') return o; - var c = new o.constructor(); - for(var p in o) c[p] = copy(o[p]); - return c; -} - -function isUnique(arr) { - var l = arr.length; - for(var i = 0; i < l; i++ ) { - if (arr.lastIndexOf(arr[i]) > i) return false; - } - return true; -} - -/** Returns the given string with all regex meta characters backslashed. */ -RegExp.escapeMeta = function(str) { - return str.replace(/([$^\\\/()|?+*\[\]{}.-])/g, "\\$1"); -} diff --git a/jsdoc-toolkit/app/frame/Chain.js b/jsdoc-toolkit/app/frame/Chain.js deleted file mode 100644 index 506469d..0000000 --- a/jsdoc-toolkit/app/frame/Chain.js +++ /dev/null @@ -1,102 +0,0 @@ -/**@constructor*/ -function ChainNode(object, link) { - this.value = object; - this.link = link; // describes this node's relationship to the previous node -} - -/**@constructor*/ -function Chain(valueLinks) { - this.nodes = []; - this.cursor = -1; - - if (valueLinks && valueLinks.length > 0) { - this.push(valueLinks[0], "//"); - for (var i = 1, l = valueLinks.length; i < l; i+=2) { - this.push(valueLinks[i+1], valueLinks[i]); - } - } -} - -Chain.prototype.push = function(o, link) { - if (this.nodes.length > 0 && link) this.nodes.push(new ChainNode(o, link)); - else this.nodes.push(new ChainNode(o)); -} - -Chain.prototype.unshift = function(o, link) { - if (this.nodes.length > 0 && link) this.nodes[0].link = link; - this.nodes.unshift(new ChainNode(o)); - this.cursor++; -} - -Chain.prototype.get = function() { - if (this.cursor < 0 || this.cursor > this.nodes.length-1) return null; - return this.nodes[this.cursor]; -} - -Chain.prototype.first = function() { - this.cursor = 0; - return this.get(); -} - -Chain.prototype.last = function() { - this.cursor = this.nodes.length-1; - return this.get(); -} - -Chain.prototype.next = function() { - this.cursor++; - return this.get(); -} - -Chain.prototype.prev = function() { - this.cursor--; - return this.get(); -} - -Chain.prototype.toString = function() { - var string = ""; - for (var i = 0, l = this.nodes.length; i < l; i++) { - if (this.nodes[i].link) string += " -("+this.nodes[i].link+")-> "; - string += this.nodes[i].value.toString(); - } - return string; -} - -Chain.prototype.joinLeft = function() { - var result = ""; - for (var i = 0, l = this.cursor; i < l; i++) { - if (result && this.nodes[i].link) result += this.nodes[i].link; - result += this.nodes[i].value.toString(); - } - return result; -} - - -/* USAGE: - -var path = "one/two/three.four/five-six"; -var pathChain = new Chain(path.split(/([\/.-])/)); -print(pathChain); - -var lineage = new Chain(); -lineage.push("Port"); -lineage.push("Les", "son"); -lineage.push("Dawn", "daughter"); -lineage.unshift("Purdie", "son"); - -print(lineage); - -// walk left -for (var node = lineage.last(); node !== null; node = lineage.prev()) { - print("< "+node.value); -} - -// walk right -var node = lineage.first() -while (node !== null) { - print(node.value); - node = lineage.next(); - if (node && node.link) print("had a "+node.link+" named"); -} - -*/ \ No newline at end of file diff --git a/jsdoc-toolkit/app/frame/Dumper.js b/jsdoc-toolkit/app/frame/Dumper.js deleted file mode 100644 index d8b007b..0000000 --- a/jsdoc-toolkit/app/frame/Dumper.js +++ /dev/null @@ -1,144 +0,0 @@ -/** - * @class -
    -This is a lightly modified version of Kevin Jones' JavaScript
    -library Data.Dump. To download the original visit:
    -    http://openjsan.org/doc/k/ke/kevinj/Data/Dump/
    -
    -AUTHORS
    -
    -The Data.Dump JavaScript module is written by Kevin Jones 
    -(kevinj@cpan.org), based on Data::Dump by Gisle Aas (gisle@aas.no),
    -based on Data::Dumper by Gurusamy Sarathy (gsar@umich.edu).
    -
    -COPYRIGHT
    -
    -Copyright 2007 Kevin Jones. Copyright 1998-2000,2003-2004 Gisle Aas.
    -Copyright 1996-1998 Gurusamy Sarathy.
    -
    -This program is free software; you can redistribute it and/or modify
    -it under the terms of the Perl Artistic License
    -
    -See http://www.perl.com/perl/misc/Artistic.html
    -
    - * @static - */ -Dumper = { - /** @param [...] The objects to dump. */ - dump: function () { - if (arguments.length > 1) - return this._dump(arguments); - else if (arguments.length == 1) - return this._dump(arguments[0]); - else - return "()"; - }, - - _dump: function (obj) { - if (typeof obj == 'undefined') return 'undefined'; - var out; - if (obj.serialize) { return obj.serialize(); } - var type = this._typeof(obj); - if (obj.circularReference) obj.circularReference++; - switch (type) { - case 'circular': - out = "{ //circularReference\n}"; - break; - case 'object': - var pairs = new Array; - - for (var prop in obj) { - if (prop != "circularReference" && obj.hasOwnProperty(prop)) { //hide inherited properties - pairs.push(prop + ': ' + this._dump(obj[prop])); - } - } - - out = '{' + this._format_list(pairs) + '}'; - break; - - case 'string': - for (var prop in Dumper.ESC) { - if (Dumper.ESC.hasOwnProperty(prop)) { - obj = obj.replace(prop, Dumper.ESC[prop]); - } - } - - // Escape UTF-8 Strings - if (obj.match(/^[\x00-\x7f]*$/)) { - out = '"' + obj.replace(/\"/g, "\\\"").replace(/([\n\r]+)/g, "\\$1") + '"'; - } - else { - out = "unescape('"+escape(obj)+"')"; - } - break; - - case 'array': - var elems = new Array; - - for (var i=0; i 60 ? '\n' : ' '; - return nl + list.join(',' + nl) + nl; - }, - - _typeof: function (obj) { - if (obj && obj.circularReference && obj.circularReference > 1) return 'circular'; - if (Array.prototype.isPrototypeOf(obj)) return 'array'; - if (Date.prototype.isPrototypeOf(obj)) return 'date'; - if (typeof obj.nodeType != 'undefined') return 'element'; - return typeof(obj); - }, - - _dump_dom: function (obj) { - return '"' + Dumper.nodeTypes[obj.nodeType] + '"'; - } -}; - -Dumper.ESC = { - "\t": "\\t", - "\n": "\\n", - "\f": "\\f" -}; - -Dumper.nodeTypes = { - 1: "ELEMENT_NODE", - 2: "ATTRIBUTE_NODE", - 3: "TEXT_NODE", - 4: "CDATA_SECTION_NODE", - 5: "ENTITY_REFERENCE_NODE", - 6: "ENTITY_NODE", - 7: "PROCESSING_INSTRUCTION_NODE", - 8: "COMMENT_NODE", - 9: "DOCUMENT_NODE", - 10: "DOCUMENT_TYPE_NODE", - 11: "DOCUMENT_FRAGMENT_NODE", - 12: "NOTATION_NODE" -}; \ No newline at end of file diff --git a/jsdoc-toolkit/app/frame/Hash.js b/jsdoc-toolkit/app/frame/Hash.js deleted file mode 100644 index 62cfad6..0000000 --- a/jsdoc-toolkit/app/frame/Hash.js +++ /dev/null @@ -1,84 +0,0 @@ -/** - @constructor - @example - var _index = new Hash(); - _index.set("a", "apple"); - _index.set("b", "blue"); - _index.set("c", "coffee"); - - for (var p = _index.first(); p; p = _index.next()) { - print(p.key+" is for "+p.value); - } - - */ -var Hash = function() { - this._map = {}; - this._keys = []; - this._vals = []; - this.reset(); -} - -Hash.prototype.set = function(k, v) { - if (k != "") { - this._keys.push(k); - this._map["="+k] = this._vals.length; - this._vals.push(v); - } -} - -Hash.prototype.replace = function(k, k2, v) { - if (k == k2) return; - - var offset = this._map["="+k]; - this._keys[offset] = k2; - if (typeof v != "undefined") this._vals[offset] = v; - this._map["="+k2] = offset; - delete(this._map["="+k]); -} - -Hash.prototype.drop = function(k) { - if (k != "") { - var offset = this._map["="+k]; - this._keys.splice(offset, 1); - this._vals.splice(offset, 1); - delete(this._map["="+k]); - for (var p in this._map) { - if (this._map[p] >= offset) this._map[p]--; - } - if (this._cursor >= offset && this._cursor > 0) this._cursor--; - } -} - -Hash.prototype.get = function(k) { - if (k != "") { - return this._vals[this._map["="+k]]; - } -} - -Hash.prototype.keys = function() { - return this._keys; -} - -Hash.prototype.hasKey = function(k) { - if (k != "") { - return (typeof this._map["="+k] != "undefined"); - } -} - -Hash.prototype.values = function() { - return this._vals; -} - -Hash.prototype.reset = function() { - this._cursor = 0; -} - -Hash.prototype.first = function() { - this.reset(); - return this.next(); -} - -Hash.prototype.next = function() { - if (this._cursor++ < this._keys.length) - return {key: this._keys[this._cursor-1], value: this._vals[this._cursor-1]}; -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/frame/Link.js b/jsdoc-toolkit/app/frame/Link.js deleted file mode 100644 index 1e6241b..0000000 --- a/jsdoc-toolkit/app/frame/Link.js +++ /dev/null @@ -1,173 +0,0 @@ -/** Handle the creation of HTML links to documented symbols. - @constructor -*/ -function Link() { - this.alias = ""; - this.src = ""; - this.file = ""; - this.text = ""; - this.innerName = ""; - this.classLink = false; - this.targetName = ""; - - this.target = function(targetName) { - if (defined(targetName)) this.targetName = targetName; - return this; - } - this.inner = function(inner) { - if (defined(inner)) this.innerName = inner; - return this; - } - this.withText = function(text) { - if (defined(text)) this.text = text; - return this; - } - this.toSrc = function(filename) { - if (defined(filename)) this.src = filename; - return this; - } - this.toSymbol = function(alias) { - if (defined(alias)) this.alias = new String(alias); - return this; - } - this.toClass = function(alias) { - this.classLink = true; - return this.toSymbol(alias); - } - this.toFile = function(file) { - if (defined(file)) this.file = file; - return this; - } - - this.toString = function() { - var linkString; - var thisLink = this; - - if (this.alias) { - linkString = this.alias.replace(/(^|[^a-z$0-9_#.:^-])([|a-z$0-9_#.:^-]+)($|[^a-z$0-9_#.:^-])/i, - function(match, prematch, symbolName, postmatch) { - var symbolNames = symbolName.split("|"); - var links = []; - for (var i = 0, l = symbolNames.length; i < l; i++) { - thisLink.alias = symbolNames[i]; - links.push(thisLink._makeSymbolLink(symbolNames[i])); - } - return prematch+links.join("|")+postmatch; - } - ); - } - else if (this.src) { - linkString = thisLink._makeSrcLink(this.src); - } - else if (this.file) { - linkString = thisLink._makeFileLink(this.file); - } - - return linkString; - } -} - -/** prefixed for hashes */ -Link.hashPrefix = ""; - -/** Appended to the front of relative link paths. */ -Link.base = ""; - -Link.symbolNameToLinkName = function(symbol) { - var linker = "", - ns = ""; - - if (symbol.isStatic) linker = "."; - else if (symbol.isInner) linker = "-"; - - if (symbol.isEvent && !/^event:/.test(symbol.name)) { - ns = "event:"; - } - return Link.hashPrefix+linker+ns+symbol.name; -} - -Link.getSymbol= function(alias) { - var symbol= Link.symbolSet.getSymbol(alias); - - if (symbol) - return symbol; - - if ('#'!==alias.charAt(0) || !Link.currentSymbol) - return null; - - // resolve relative name - var container= Link.currentSymbol; - - while (container) - { - symbol= Link.symbolSet.getSymbol(container.alias + alias); - if (symbol) - return symbol; - - // No superclass - if (!container.augments.length) - return null; - - container= Link.symbolSet.getSymbol(container.augments[0].desc); - } - - return null; -} - -/** Create a link to another symbol. */ -Link.prototype._makeSymbolLink = function(alias) { - var linkBase = Link.base+publish.conf.symbolsDir; - var linkTo = Link.getSymbol(alias); - var linkPath; - var target = (this.targetName)? " target=\""+this.targetName+"\"" : ""; - - // if there is no symbol by that name just return the name unaltered - if (!linkTo) - return this.text || alias; - - // it's a symbol in another file - else { - if (!linkTo.is("CONSTRUCTOR") && !linkTo.isNamespace) { // it's a method or property - linkPath= (Link.filemap) ? Link.filemap[linkTo.memberOf] : - escape(linkTo.memberOf) || "_global_"; - linkPath += publish.conf.ext + "#" + Link.symbolNameToLinkName(linkTo); - } - else { - linkPath = (Link.filemap)? Link.filemap[linkTo.alias] : escape(linkTo.alias); - linkPath += publish.conf.ext;// + (this.classLink? "":"#" + Link.hashPrefix + "constructor"); - } - linkPath = linkBase + linkPath - } - - var linkText= this.text || alias; - - var link = {linkPath: linkPath, linkText: linkText, linkInner: (this.innerName? "#"+this.innerName : "")}; - - if (typeof JSDOC.PluginManager != "undefined") { - JSDOC.PluginManager.run("onSymbolLink", link); - } - - return ""+link.linkText+""; -} - -/** Create a link to a source file. */ -Link.prototype._makeSrcLink = function(srcFilePath) { - var target = (this.targetName)? " target=\""+this.targetName+"\"" : ""; - - // transform filepath into a filename - var srcFile = srcFilePath.replace(/\.\.?[\\\/]/g, "").replace(/[:\\\/]/g, "_"); - var outFilePath = Link.base + publish.conf.srcDir + srcFile + publish.conf.ext; - - if (!this.text) this.text = FilePath.fileName(srcFilePath); - return ""+this.text+""; -} - -/** Create a link to a source file. */ -Link.prototype._makeFileLink = function(filePath) { - var target = (this.targetName)? " target=\""+this.targetName+"\"" : ""; - - var outFilePath = Link.base + filePath; - - if (!this.text) this.text = filePath; - return ""+this.text+""; -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/frame/Namespace.js b/jsdoc-toolkit/app/frame/Namespace.js deleted file mode 100644 index fa1e41d..0000000 --- a/jsdoc-toolkit/app/frame/Namespace.js +++ /dev/null @@ -1,10 +0,0 @@ -_global_ = this; - -function Namespace(name, f) { - var n = name.split("."); - for (var o = _global_, i = 0, l = n.length; i < l; i++) { - o = o[n[i]] = o[n[i]] || {}; - } - - if (f) f(); -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/frame/Opt.js b/jsdoc-toolkit/app/frame/Opt.js deleted file mode 100644 index 352f159..0000000 --- a/jsdoc-toolkit/app/frame/Opt.js +++ /dev/null @@ -1,134 +0,0 @@ -/** @namespace */ -Opt = { - /** - * Get commandline option values. - * @param {Array} args Commandline arguments. Like ["-a=xml", "-b", "--class=new", "--debug"] - * @param {object} optNames Map short names to long names. Like {a:"accept", b:"backtrace", c:"class", d:"debug"}. - * @return {object} Short names and values. Like {a:"xml", b:true, c:"new", d:true} - */ - get: function(args, optNames) { - var opt = {"_": []}; // the unnamed option allows multiple values - for (var i = 0; i < args.length; i++) { - var arg = new String(args[i]); - var name; - var value; - if (arg.charAt(0) == "-") { - if (arg.charAt(1) == "-") { // it's a longname like --foo - arg = arg.substring(2); - var m = arg.split("="); - name = m.shift(); - value = m.shift(); - if (typeof value == "undefined") value = true; - - for (var n in optNames) { // convert it to a shortname - if (name == optNames[n]) { - name = n; - } - } - } - else { // it's a shortname like -f - arg = arg.substring(1); - var m = arg.split("="); - name = m.shift(); - value = m.shift(); - if (typeof value == "undefined") value = true; - - for (var n in optNames) { // find the matching key - if (name == n || name+'[]' == n) { - name = n; - break; - } - } - } - if (name.match(/(.+)\[\]$/)) { // it's an array type like n[] - name = RegExp.$1; - if (!opt[name]) opt[name] = []; - } - - if (opt[name] && opt[name].push) { - opt[name].push(value); - } - else { - opt[name] = value; - } - } - else { // not associated with any optname - opt._.push(args[i]); - } - } - return opt; - } -} - -/*t: - plan(11, "Testing Opt."); - - is( - typeof Opt, - "object", - "Opt is an object." - ); - - is( - typeof Opt.get, - "function", - "Opt.get is a function." - ); - - var optNames = {a:"accept", b:"backtrace", c:"class", d:"debug", "e[]":"exceptions"}; - var t_options = Opt.get(["-a=xml", "-b", "--class=new", "--debug", "-e=one", "-e=two", "foo", "bar"], optNames); - - is( - t_options.a, - "xml", - "an option defined with a short name can be accessed by its short name." - ); - - is( - t_options.b, - true, - "an option defined with a short name and no value are true." - ); - - is( - t_options.c, - "new", - "an option defined with a long name can be accessed by its short name." - ); - - is( - t_options.d, - true, - "an option defined with a long name and no value are true." - ); - - is( - typeof t_options.e, - "object", - "an option that can accept multiple values is defined." - ); - - is( - t_options.e.length, - 2, - "an option that can accept multiple values can have more than one value." - ); - - is( - t_options.e[1], - "two", - "an option that can accept multiple values can be accessed as an array." - ); - - is( - typeof t_options._, - "object", - "the property '_' is defined for unnamed options." - ); - - is( - t_options._[0], - "foo", - "the property '_' can be accessed as an array." - ); - */ \ No newline at end of file diff --git a/jsdoc-toolkit/app/frame/Reflection.js b/jsdoc-toolkit/app/frame/Reflection.js deleted file mode 100644 index 0968f1c..0000000 --- a/jsdoc-toolkit/app/frame/Reflection.js +++ /dev/null @@ -1,26 +0,0 @@ -/**@constructor*/ -function Reflection(obj) { - this.obj = obj; -} - -Reflection.prototype.getConstructorName = function() { - if (this.obj.constructor.name) return this.obj.constructor.name; - var src = this.obj.constructor.toSource(); - var name = src.substring(name.indexOf("function")+8, src.indexOf('(')).replace(/ /g,''); - return name; -} - -Reflection.prototype.getMethod = function(name) { - for (var p in this.obj) { - if (p == name && typeof(this.obj[p]) == "function") return this.obj[p]; - } - return null; -} - -Reflection.prototype.getParameterNames = function() { - var src = this.obj.toSource(); - src = src.substring( - src.indexOf("(", 8)+1, src.indexOf(")") - ); - return src.split(/, ?/); -} diff --git a/jsdoc-toolkit/app/frame/String.js b/jsdoc-toolkit/app/frame/String.js deleted file mode 100644 index c183c27..0000000 --- a/jsdoc-toolkit/app/frame/String.js +++ /dev/null @@ -1,93 +0,0 @@ -/** - @name String - @class Additions to the core string object. -*/ - -/** @author Steven Levithan, released as public domain. */ -String.prototype.trim = function() { - var str = this.replace(/^\s+/, ''); - for (var i = str.length - 1; i >= 0; i--) { - if (/\S/.test(str.charAt(i))) { - str = str.substring(0, i + 1); - break; - } - } - return str; -} -/*t: - plan(6, "Testing String.prototype.trim."); - - var s = " a bc ".trim(); - is(s, "a bc", "multiple spaces front and back are trimmed."); - - s = "a bc\n\n".trim(); - is(s, "a bc", "newlines only in back are trimmed."); - - s = "\ta bc".trim(); - is(s, "a bc", "tabs only in front are trimmed."); - - s = "\n \t".trim(); - is(s, "", "an all-space string is trimmed to empty."); - - s = "a b\nc".trim(); - is(s, "a b\nc", "a string with no spaces in front or back is trimmed to itself."); - - s = "".trim(); - is(s, "", "an empty string is trimmed to empty."); - -*/ - -String.prototype.balance = function(open, close) { - var i = 0; - while (this.charAt(i) != open) { - if (i == this.length) return [-1, -1]; - i++; - } - - var j = i+1; - var balance = 1; - while (j < this.length) { - if (this.charAt(j) == open) balance++; - if (this.charAt(j) == close) balance--; - if (balance == 0) break; - j++; - if (j == this.length) return [-1, -1]; - } - - return [i, j]; -} -/*t: - plan(16, "Testing String.prototype.balance."); - - var s = "{abc}".balance("{","}"); - is(s[0], 0, "opener in first is found."); - is(s[1], 4, "closer in last is found."); - - s = "ab{c}de".balance("{","}"); - is(s[0], 2, "opener in middle is found."); - is(s[1], 4, "closer in middle is found."); - - s = "a{b{c}de}f".balance("{","}"); - is(s[0], 1, "nested opener is found."); - is(s[1], 8, "nested closer is found."); - - s = "{}".balance("{","}"); - is(s[0], 0, "opener with no content is found."); - is(s[1], 1, "closer with no content is found."); - - s = "".balance("{","}"); - is(s[0], -1, "empty string opener is -1."); - is(s[1], -1, "empty string closer is -1."); - - s = "{abc".balance("{","}"); - is(s[0], -1, "opener with no closer returns -1."); - is(s[1], -1, "no closer returns -1."); - - s = "abc".balance("{","}"); - is(s[0], -1, "no opener or closer returns -1 for opener."); - is(s[1], -1, "no opener or closer returns -1 for closer."); - - s = "aX11/MIT License - * (See the accompanying README file for full details.) - */ - -/** - Yet another unit testing tool for JavaScript. - @author Michael Mathews micmath@gmail.com - @param {object} testCases Properties are testcase names, values are functions to execute as tests. -*/ -function testrun(testCases) { - var ran = 0; - for (t in testCases) { - var result = testCases[t](); - ran++; - } - - return testrun.reportOut+"-------------------------------\n"+((testrun.fails>0)? ":( Failed "+testrun.fails+"/" : ":) Passed all ")+testrun.count+" test"+((testrun.count == 1)? "":"s")+".\n"; -} - - -testrun.count = 0; -testrun.current = null; -testrun.passes = 0; -testrun.fails = 0; -testrun.reportOut = ""; - -/** @private */ -testrun.report = function(text) { - testrun.reportOut += text+"\n"; -} - -/** - Check if test evaluates to true. - @param {string} test To be evaluated. - @param {string} message Optional. To be displayed in the report. - @return {boolean} True if the string test evaluates to true. -*/ -ok = function(test, message) { - testrun.count++; - - var result; - try { - result = eval(test); - - if (result) { - testrun.passes++; - testrun.report(" OK "+testrun.count+" - "+((message != null)? message : "")); - } - else { - testrun.fails++; - testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : "")); - } - } - catch(e) { - testrun.fails++ - testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : "")); - - } -} - -/** - Check if test is same as expected. - @param {string} test To be evaluated. - @param {string} expected - @param {string} message Optional. To be displayed in the report. - @return {boolean} True if (test == expected). Note that the comparison is not a strict equality check. -*/ -is = function(test, expected, message) { - testrun.count++; - - var result; - try { - result = eval(test); - - if (result == expected) { - testrun.passes++ - testrun.report(" OK "+testrun.count+" - "+((message != null)? message : "")); - } - else { - testrun.fails++ - testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : "")); - testrun.report("expected: "+expected); - testrun.report(" got: "+result); - } - } - catch(e) { - testrun.fails++ - testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : "")); - testrun.report("expected: "+expected); - testrun.report(" got: "+result);} -} - -/** - Check if test matches pattern. - @param {string} test To be evaluated. - @param {string} pattern Used to create a RegExp. - @param {string} message Optional. To be displayed in the report. - @return {boolean} True if test matches pattern. -*/ -like = function(test, pattern, message) { - testrun.count++; - - var result; - try { - result = eval(test); - var rgx = new RegExp(pattern); - - if (rgx.test(result)) { - testrun.passes++ - testrun.report(" OK "+testrun.count+" - "+((message != null)? message : "")); - } - else { - testrun.fails++ - testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : "")); - testrun.report(" this: "+result); - testrun.report("is not like: "+pattern); - } - } - catch(e) { - testrun.fails++ - testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : "")); - } -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/handlers/FOODOC.js b/jsdoc-toolkit/app/handlers/FOODOC.js deleted file mode 100644 index b208f55..0000000 --- a/jsdoc-toolkit/app/handlers/FOODOC.js +++ /dev/null @@ -1,26 +0,0 @@ -/** - This is the main container for the FOODOC handler. - @namespace -*/ -FOODOC = { -}; - -/** The current version string of this application. */ -FOODOC.VERSION = "1.0"; - -FOODOC.handle = function(srcFile, src) { - LOG.inform("Handling file '" + srcFile + "'"); - - return [ - new JSDOC.Symbol( - "foo", - [], - "VIRTUAL", - new JSDOC.DocComment("/** This is a foo. */") - ) - ]; -}; - -FOODOC.publish = function(symbolgroup) { - LOG.inform("Publishing symbolgroup."); -}; diff --git a/jsdoc-toolkit/app/handlers/XMLDOC.js b/jsdoc-toolkit/app/handlers/XMLDOC.js deleted file mode 100644 index 40f87b3..0000000 --- a/jsdoc-toolkit/app/handlers/XMLDOC.js +++ /dev/null @@ -1,26 +0,0 @@ -/** - * This is the main container for the XMLDOC handler. - * @namespace - * @author Brett Fattori (bfattori@fry.com) - * @version $Revision: 498 $ - */ -XMLDOC = { - -}; - -/** The current version string of this application. */ -XMLDOC.VERSION = "1.0"; - -/** Include the library necessary to handle XML files */ -IO.includeDir("handlers/XMLDOC/"); - -/** - * @type Symbol[] - */ -XMLDOC.handle = function(srcFile, src) { - -}; - -XMLDOC.publish = function(symbolgroup) { - -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js b/jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js deleted file mode 100644 index 240563d..0000000 --- a/jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js +++ /dev/null @@ -1,159 +0,0 @@ -LOG.inform("XMLDOC.DomReader loaded"); - -XMLDOC.DomReader = function(root) { - - this.dom = root; - - /** - * The current node the reader is on - */ - this.node = root; - - /** - * Get the current node the reader is on - * @type XMLDOC.Parser.node - */ - XMLDOC.DomReader.prototype.getNode = function() { - return this.node; - }; - - /** - * Set the node the reader should be positioned on. - * @param node {XMLDOC.Parser.node} - */ - XMLDOC.DomReader.prototype.setNode = function(node) { - this.node = node; - }; - - /** - * A helper method to make sure the current node will - * never return null, unless null is passed as the root. - * @param step {String} An expression to evaluate - should return a node or null - */ - XMLDOC.DomReader.prototype.navigate = function(step) { - var n; - if ((n = step) != null) - { - this.node = n; - return this.node; - } - return null; - }; - - /** - * Get the root node of the current node's document. - */ - XMLDOC.DomReader.prototype.root = function() { - this.navigate(this.dom); - }; - - /** - * Get the parent of the current node. - */ - XMLDOC.DomReader.prototype.parent = function() { - return this.navigate(this.node.parentNode()); - }; - - /** - * Get the first child of the current node. - */ - XMLDOC.DomReader.prototype.firstChild = function() { - return this.navigate(this.node.firstChild()); - }; - - /** - * Get the last child of the current node. - */ - XMLDOC.DomReader.prototype.lastChild = function() { - return this.navigate(this.node.lastChild()); - }; - - /** - * Get the next sibling of the current node. - */ - XMLDOC.DomReader.prototype.nextSibling = function() { - return this.navigate(this.node.nextSibling()); - }; - - /** - * Get the previous sibling of the current node. - */ - XMLDOC.DomReader.prototype.prevSibling = function() { - return this.navigate(this.node.prevSibling()); - }; - - //=============================================================================================== - // Support methods - - /** - * Walk the tree starting with the current node, calling the plug-in for - * each node visited. Each time the plug-in is called, the DomReader - * is passed as the only parameter. Use the {@link XMLDOC.DomReader#getNode} method - * to access the current node. This method uses a depth first traversal pattern. - * - * @param srcFile {String} The source file being evaluated - */ - XMLDOC.DomReader.prototype.getSymbols = function(srcFile) - { - XMLDOC.DomReader.symbols = []; - XMLDOC.DomReader.currentFile = srcFile; - JSDOC.Symbol.srcFile = (srcFile || ""); - - if (defined(JSDOC.PluginManager)) { - JSDOC.PluginManager.run("onDomGetSymbols", this); - } - - return XMLDOC.DomReader.symbols; - }; - - /** - * Find the node with the given name using a depth first traversal. - * Does not modify the DomReader's current node. - * - * @param name {String} The name of the node to find - * @return the node that was found, or null if not found - */ - XMLDOC.DomReader.prototype.findNode = function(name) - { - var findNode = null; - - // Start at the current node and move into the subtree, - // looking for the node with the given name - function deeper(node, find) - { - var look = null; - - if (node) { - if (node.name == find) - { - return node; - } - - if (node.firstChild()) - { - look = deeper(node.firstChild(), find); - } - - if (!look && node.nextSibling()) - { - look = deeper(node.nextSibling(), find); - } - } - - return look; - } - - return deeper(this.getNode().firstChild(), name); - }; - - /** - * Find the next node with the given name using a depth first traversal. - * - * @param name {String} The name of the node to find - */ - XMLDOC.DomReader.prototype.findPreviousNode = function(name) - { - }; - -}; - diff --git a/jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js b/jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js deleted file mode 100644 index e9b3e3c..0000000 --- a/jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js +++ /dev/null @@ -1,16 +0,0 @@ -LOG.inform("XMLDOC.symbolize loaded"); - -/** - * Convert the source file to a set of symbols - */ -XMLDOC.symbolize = function(srcFile, src) { - - LOG.inform("Symbolizing file '" + srcFile + "'"); - - // XML files already have a defined structure, so we don't need to - // do anything but parse them. The DOM reader can create a symbol - // table from the parsed XML. - var dr = new XMLDOC.DomReader(XMLDOC.Parser.parse(src)); - return dr.getSymbols(srcFile); - -}; diff --git a/jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js b/jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js deleted file mode 100644 index 78e8f45..0000000 --- a/jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js +++ /dev/null @@ -1,292 +0,0 @@ -LOG.inform("XMLDOC.Parser loaded"); - -/** - * XML Parser object. Returns an {@link #XMLDOC.Parser.node} which is - * the root element of the parsed document. - *

    - * By default, this parser will only handle well formed XML. To - * allow the parser to handle HTML, set the XMLDOC.Parser.strictMode - * variable to false before calling XMLDOC.Parser.parse(). - *

    - * Note: If you pass poorly formed XML, it will cause the parser to throw - * an exception. - * - * @author Brett Fattori (bfattori@fry.com) - * @author $Author: micmath $ - * @version $Revision: 497 $ - */ -XMLDOC.Parser = {}; - -/** - * Strict mode setting. Setting this to false allows HTML-style source to - * be parsed. Normally, well formed XML has defined end tags, or empty tags - * are properly formed. Default: true - * @type Boolean - */ -XMLDOC.Parser.strictMode = true; - -/** - * A node in an XML Document. Node types are ROOT, ELEMENT, COMMENT, PI, and TEXT. - * @param parent {XMLDOC.Parser.node} The parent node - * @param name {String} The node name - * @param type {String} One of the types - */ -XMLDOC.Parser.node = function(parent, name, type) -{ - this.name = name; - this.type = type || "ELEMENT"; - this.parent = parent; - this.charData = ""; - this.attrs = {}; - this.nodes = []; - this.cPtr = 0; - - XMLDOC.Parser.node.prototype.getAttributeNames = function() { - var a = []; - for (var o in this.attrs) - { - a.push(o); - } - - return a; - }; - - XMLDOC.Parser.node.prototype.getAttribute = function(attr) { - return this.attrs[attr]; - }; - - XMLDOC.Parser.node.prototype.setAttribute = function(attr, val) { - this.attrs[attr] = val; - }; - - XMLDOC.Parser.node.prototype.getChild = function(idx) { - return this.nodes[idx]; - }; - - XMLDOC.Parser.node.prototype.parentNode = function() { - return this.parent; - }; - - XMLDOC.Parser.node.prototype.firstChild = function() { - return this.nodes[0]; - }; - - XMLDOC.Parser.node.prototype.lastChild = function() { - return this.nodes[this.nodes.length - 1]; - }; - - XMLDOC.Parser.node.prototype.nextSibling = function() { - var p = this.parent; - if (p && (p.nodes.indexOf(this) + 1 != p.nodes.length)) - { - return p.getChild(p.nodes.indexOf(this) + 1); - } - return null; - }; - - XMLDOC.Parser.node.prototype.prevSibling = function() { - var p = this.parent; - if (p && (p.nodes.indexOf(this) - 1 >= 0)) - { - return p.getChild(p.nodes.indexOf(this) - 1); - } - return null; - }; -}; - -/** - * Parse an XML Document from the specified source. The XML should be - * well formed, unless strict mode is disabled, then the parser will - * handle HTML-style XML documents. - * @param src {String} The source to parse - */ -XMLDOC.Parser.parse = function(src) -{ - var A = []; - - // Normailize whitespace - A = src.split("\r\n"); - src = A.join("\n"); - A = src.split("\r"); - src = A.join("\n"); - - // Remove XML and DOCTYPE specifier - src.replace(/<\?XML .*\?>/i, ""); - src.replace(//i, ""); - - // The document is the root node and cannot be modified or removed - var doc = new XMLDOC.Parser.node(null, "ROOT", "DOCUMENT"); - - // Let's break it down - XMLDOC.Parser.eat(doc, src); - - return doc; -}; - -/** - * The XML fragment processing routine. This method is private and should not be called - * directly. - * @param parentNode {XMLDOC.Parser.node} The node which is the parent of this fragment - * @param src {String} The source within the fragment to process - * @private - */ -XMLDOC.Parser.eat = function(parentNode, src) -{ - // A simple tag def - var reTag = new RegExp("<(!|)(\\?|--|)((.|\\s)*?)\\2>","g"); - - // Special tag types - var reCommentTag = //; - var rePITag = /<\?((.|\s)*?)\?>/; - - // A start tag (with potential empty marker) - var reStartTag = /<(.*?)( +([\w_\-]*)=(\"|')(.*)\4)*(\/)?>/; - - // An empty HTML style tag (not proper XML, but we'll accept it so we can process HTML) - var reHTMLEmptyTag = /<(.*?)( +([\w_\-]*)=(\"|')(.*)\4)*>/; - - // Fully enclosing tag with nested tags - var reEnclosingTag = /<(.*?)( +([\w_\-]*)=(\"|')(.*?)\4)*>((.|\s)*?)<\/\1>/; - - // Breaks down attributes - var reAttributes = new RegExp(" +([\\w_\\-]*)=(\"|')(.*?)\\2","g"); - - // Find us a tag - var tag; - while ((tag = reTag.exec(src)) != null) - { - if (tag.index > 0) - { - // The next tag has some text before it - var text = src.substring(0, tag.index).replace(/^[ \t\n]+((.|\n)*?)[ \t\n]+$/, "$1"); - - if (text.length > 0 && (text != "\n")) - { - var txtnode = new XMLDOC.Parser.node(parentNode, "", "TEXT"); - txtnode.charData = text; - - // Append the new text node - parentNode.nodes.push(txtnode); - } - - // Reset the lastIndex of reTag - reTag.lastIndex -= src.substring(0, tag.index).length; - - // Eat the text - src = src.substring(tag.index); - } - - if (reCommentTag.test(tag[0])) - { - // Is this a comment? - var comment = new XMLDOC.Parser.node(parentNode, "", "COMMENT"); - comment.charData = reCommentTag.exec(tag[0])[1]; - - // Append the comment - parentNode.nodes.push(comment); - - // Move the lastIndex of reTag - reTag.lastIndex -= tag[0].length; - - // Eat the tag - src = src.replace(reCommentTag, ""); - } - else if (rePITag.test(tag[0])) - { - // Is this a processing instruction? - var pi = new XMLDOC.Parser.node(parentNode, "", "PI"); - pi.charData = rePITag.exec(tag[0])[1]; - - // Append the processing instruction - parentNode.nodes.push(pi); - - // Move the lastIndex of reTag - reTag.lastIndex -= tag[0].length; - - // Eat the tag - src = src.replace(rePITag, ""); - } - else if (reStartTag.test(tag[0])) - { - // Break it down - var e = reStartTag.exec(tag[0]); - var elem = new XMLDOC.Parser.node(parentNode, e[1], "ELEMENT"); - - // Get attributes from the tag - var a; - while ((a = reAttributes.exec(e[2])) != null ) - { - elem.attrs[a[1]] = a[3]; - } - - // Is this an empty XML-style tag? - if (e[6] == "/") - { - // Append the empty element - parentNode.nodes.push(elem); - - // Move the lastIndex of reTag (include the start tag length) - reTag.lastIndex -= e[0].length; - - // Eat the tag - src = src.replace(reStartTag, ""); - } - else - { - // Check for malformed XML tags - var htmlParsed = false; - var htmlStartTag = reHTMLEmptyTag.exec(src); - - // See if there isn't an end tag within this block - var reHTMLEndTag = new RegExp(""); - var htmlEndTag = reHTMLEndTag.exec(src); - - if (XMLDOC.Parser.strictMode && htmlEndTag == null) - { - // Poorly formed XML fails in strict mode - var err = new Error("Malformed XML passed to XMLDOC.Parser... Error contains malformed 'src'"); - err.src = src; - throw err; - } - else if (htmlEndTag == null) - { - // This is an HTML-style empty tag, store the element for it in non-strict mode - parentNode.nodes.push(elem); - - // Eat the tag - src = src.replace(reHTMLEmptyTag, ""); - htmlParsed = true; - } - - // If we didn't parse HTML-style, it must be an enclosing tag - if (!htmlParsed) - { - var enc = reEnclosingTag.exec(src); - - // Go deeper into the document - XMLDOC.Parser.eat(elem, enc[6]); - - // Append the new element node - parentNode.nodes.push(elem); - - // Eat the tag - src = src.replace(reEnclosingTag, ""); - } - } - - // Reset the lastIndex of reTag - reTag.lastIndex = 0; - } - } - - // No tag was found... append the text if there is any - src = src.replace(/^[ \t\n]+((.|\n)*?)[ \t\n]+$/, "$1"); - if (src.length > 0 && (src != "\n")) - { - var txtNode = new XMLDOC.Parser.node(parentNode, "", "TEXT"); - txtNode.charData = src; - - // Append the new text node - parentNode.nodes.push(txtNode); - } -}; diff --git a/jsdoc-toolkit/app/lib/JSDOC.js b/jsdoc-toolkit/app/lib/JSDOC.js deleted file mode 100644 index 5de7b9e..0000000 --- a/jsdoc-toolkit/app/lib/JSDOC.js +++ /dev/null @@ -1,106 +0,0 @@ -/** - @overview - @date $Date: 2010-06-13 22:02:44 +0100 (Sun, 13 Jun 2010) $ - @version $Revision: 837 $ - @location $HeadURL: https://jsdoc-toolkit.googlecode.com/svn/tags/jsdoc_toolkit-2.4.0/jsdoc-toolkit/app/lib/JSDOC.js $ - @name JSDOC.js - */ - -/** - This is the main container for the JSDOC application. - @namespace -*/ -JSDOC = { -}; - -/** - @requires Opt - */ -if (typeof arguments == "undefined") arguments = []; -JSDOC.opt = Opt.get( - arguments, - { - a: "allfunctions", - c: "conf", - d: "directory", - "D[]": "define", - e: "encoding", - "E[]": "exclude", - h: "help", - m: "multiple", - n: "nocode", - o: "out", - p: "private", - q: "quiet", - r: "recurse", - S: "securemodules", - s: "suppress", - t: "template", - T: "testmode", - u: "unique", - v: "verbose", - x: "ext" - } -); - -/** The current version string of this application. */ -JSDOC.VERSION = "2.4.0"; - -/** Print out usage information and quit. */ -JSDOC.usage = function() { - print("USAGE: java -jar jsrun.jar app/run.js [OPTIONS] ..."); - print(""); - print("OPTIONS:"); - print(" -a or --allfunctions\n Include all functions, even undocumented ones.\n"); - print(" -c or --conf\n Load a configuration file.\n"); - print(" -d= or --directory=\n Output to this directory (defaults to \"out\").\n"); - print(" -D=\"myVar:My value\" or --define=\"myVar:My value\"\n Multiple. Define a variable, available in JsDoc as JSDOC.opt.D.myVar.\n"); - print(" -e= or --encoding=\n Use this encoding to read and write files.\n"); - print(" -E=\"REGEX\" or --exclude=\"REGEX\"\n Multiple. Exclude files based on the supplied regex.\n"); - print(" -h or --help\n Show this message and exit.\n"); - print(" -m or --multiples\n Don't warn about symbols being documented more than once.\n"); - print(" -n or --nocode\n Ignore all code, only document comments with @name tags.\n"); - print(" -o= or --out=\n Print log messages to a file (defaults to stdout).\n"); - print(" -p or --private\n Include symbols tagged as private, underscored and inner symbols.\n"); - print(" -q or --quiet\n Do not output any messages, not even warnings.\n"); - print(" -r= or --recurse=\n Descend into src directories.\n"); - print(" -s or --suppress\n Suppress source code output.\n"); - print(" -S or --securemodules\n Use Secure Modules mode to parse source code.\n"); - print(" -t= or --template=\n Required. Use this template to format the output.\n"); - print(" -T or --test\n Run all unit tests and exit.\n"); - print(" -u or --unique\n Force file names to be unique, but not based on symbol names.\n"); - print(" -v or --verbose\n Provide verbose feedback about what is happening.\n"); - print(" -x=[,EXT]... or --ext=[,EXT]...\n Scan source files with the given extension/s (defaults to js).\n"); - - quit(); -} - -/*t: - plan(4, "Testing JSDOC namespace."); - - is( - typeof JSDOC, - "object", - "JSDOC.usage is a function." - ); - - is( - typeof JSDOC.VERSION, - "string", - "JSDOC.VERSION is a string." - ); - - is( - typeof JSDOC.usage, - "function", - "JSDOC.usage is a function." - ); - - is( - typeof JSDOC.opt, - "object", - "JSDOC.opt is a object." - ); - */ - -if (this.IO) IO.includeDir("lib/JSDOC/"); diff --git a/jsdoc-toolkit/app/lib/JSDOC/DocComment.js b/jsdoc-toolkit/app/lib/JSDOC/DocComment.js deleted file mode 100644 index 4b21cd7..0000000 --- a/jsdoc-toolkit/app/lib/JSDOC/DocComment.js +++ /dev/null @@ -1,204 +0,0 @@ -if (typeof JSDOC == "undefined") JSDOC = {}; - -/** - Create a new DocComment. This takes a raw documentation comment, - and wraps it in useful accessors. - @class Represents a documentation comment object. - */ -JSDOC.DocComment = function(/**String*/comment) { - this.init(); - if (typeof comment != "undefined") { - this.parse(comment); - } -} - -JSDOC.DocComment.prototype.init = function() { - this.isUserComment = true; - this.src = ""; - this.meta = ""; - this.tagTexts = []; - this.tags = []; -} - -/** - @requires JSDOC.DocTag - */ -JSDOC.DocComment.prototype.parse = function(/**String*/comment) { - if (comment == "") { - comment = "/** @desc */"; - this.isUserComment = false; - } - - this.src = JSDOC.DocComment.unwrapComment(comment); - - this.meta = ""; - if (this.src.indexOf("#") == 0) { - this.src.match(/#(.+[+-])([\s\S]*)$/); - if (RegExp.$1) this.meta = RegExp.$1; - if (RegExp.$2) this.src = RegExp.$2; - } - - if (typeof JSDOC.PluginManager != "undefined") { - JSDOC.PluginManager.run("onDocCommentSrc", this); - } - - this.fixDesc(); - - this.src = JSDOC.DocComment.shared+"\n"+this.src; - - this.tagTexts = - this.src - .split(/(^|[\r\n])\s*@/) - .filter(function($){return $.match(/\S/)}); - - /** - The tags found in the comment. - @type JSDOC.DocTag[] - */ - this.tags = this.tagTexts.map(function($){return new JSDOC.DocTag($)}); - - if (typeof JSDOC.PluginManager != "undefined") { - JSDOC.PluginManager.run("onDocCommentTags", this); - } -} - -/*t: - plan(5, "testing JSDOC.DocComment"); - requires("../frame/String.js"); - requires("../lib/JSDOC/DocTag.js"); - - var com = new JSDOC.DocComment("/**@foo some\n* comment here*"+"/"); - is(com.tagTexts[0], "foo some\ncomment here", "first tag text is found."); - is(com.tags[0].title, "foo", "the title is found in a comment with one tag."); - - var com = new JSDOC.DocComment("/** @foo first\n* @bar second*"+"/"); - is(com.getTag("bar").length, 1, "getTag() returns one tag by that title."); - - JSDOC.DocComment.shared = "@author John Smith"; - var com = new JSDOC.DocComment("/**@foo some\n* comment here*"+"/"); - is(com.tags[0].title, "author", "shared comment is added."); - is(com.tags[1].title, "foo", "shared comment is added to existing tag."); -*/ - -/** - If no @desc tag is provided, this function will add it. - */ -JSDOC.DocComment.prototype.fixDesc = function() { - if (this.meta && this.meta != "@+") return; - if (/^\s*[^@\s]/.test(this.src)) { - this.src = "@desc "+this.src; - } -} - -/*t: - plan(5, "testing JSDOC.DocComment#fixDesc"); - - var com = new JSDOC.DocComment(); - - com.src = "this is a desc\n@author foo"; - com.fixDesc(); - is(com.src, "@desc this is a desc\n@author foo", "if no @desc tag is provided one is added."); - - com.src = "x"; - com.fixDesc(); - is(com.src, "@desc x", "if no @desc tag is provided one is added to a single character."); - - com.src = "\nx"; - com.fixDesc(); - is(com.src, "@desc \nx", "if no @desc tag is provided one is added to return and character."); - - com.src = " "; - com.fixDesc(); - is(com.src, " ", "if no @desc tag is provided one is not added to just whitespace."); - - com.src = ""; - com.fixDesc(); - is(com.src, "", "if no @desc tag is provided one is not added to empty."); -*/ - -/** - Remove slash-star comment wrapper from a raw comment string. - @type String - */ -JSDOC.DocComment.unwrapComment = function(/**String*/comment) { - if (!comment) return ""; - var unwrapped = comment.replace(/(^\/\*\*|\*\/$)/g, "").replace(/^\s*\* ?/gm, ""); - return unwrapped; -} - -/*t: - plan(5, "testing JSDOC.DocComment.unwrapComment"); - - var com = "/**x*"+"/"; - var unwrapped = JSDOC.DocComment.unwrapComment(com); - is(unwrapped, "x", "a single character jsdoc is found."); - - com = "/***x*"+"/"; - unwrapped = JSDOC.DocComment.unwrapComment(com); - is(unwrapped, "x", "three stars are allowed in the opener."); - - com = "/****x*"+"/"; - unwrapped = JSDOC.DocComment.unwrapComment(com); - is(unwrapped, "*x", "fourth star in the opener is kept."); - - com = "/**x\n * y\n*"+"/"; - unwrapped = JSDOC.DocComment.unwrapComment(com); - is(unwrapped, "x\ny\n", "leading stars and spaces are trimmed."); - - com = "/**x\n * y\n*"+"/"; - unwrapped = JSDOC.DocComment.unwrapComment(com); - is(unwrapped, "x\n y\n", "only first space after leading stars are trimmed."); -*/ - -/** - Provides a printable version of the comment. - @type String - */ -JSDOC.DocComment.prototype.toString = function() { - return this.src; -} - -/*t: - plan(1, "testing JSDOC.DocComment#fixDesc"); - var com = new JSDOC.DocComment(); - com.src = "foo"; - is(""+com, "foo", "stringifying a comment returns the unwrapped src."); -*/ - -/** - Given the title of a tag, returns all tags that have that title. - @type JSDOC.DocTag[] - */ -JSDOC.DocComment.prototype.getTag = function(/**String*/tagTitle) { - return this.tags.filter(function($){return $.title == tagTitle}); -} - -JSDOC.DocComment.prototype.deleteTag = function(/**String*/tagTitle) { - this.tags = this.tags.filter(function($){return $.title != tagTitle}) -} - -/*t: - plan(1, "testing JSDOC.DocComment#getTag"); - requires("../frame/String.js"); - requires("../lib/JSDOC/DocTag.js"); - - var com = new JSDOC.DocComment("/**@foo some\n* @bar\n* @bar*"+"/"); - is(com.getTag("bar").length, 2, "getTag returns expected number of tags."); -*/ - -/** - Used to store the currently shared tag text. -*/ -JSDOC.DocComment.shared = ""; - -/*t: - plan(2, "testing JSDOC.DocComment.shared"); - requires("../frame/String.js"); - requires("../lib/JSDOC/DocTag.js"); - - JSDOC.DocComment.shared = "@author Michael"; - - var com = new JSDOC.DocComment("/**@foo\n* @foo*"+"/"); - is(com.getTag("author").length, 1, "getTag returns shared tag."); - is(com.getTag("foo").length, 2, "getTag returns unshared tags too."); -*/ \ No newline at end of file diff --git a/jsdoc-toolkit/app/lib/JSDOC/DocTag.js b/jsdoc-toolkit/app/lib/JSDOC/DocTag.js deleted file mode 100644 index 77ec07c..0000000 --- a/jsdoc-toolkit/app/lib/JSDOC/DocTag.js +++ /dev/null @@ -1,294 +0,0 @@ -if (typeof JSDOC == "undefined") JSDOC = {}; - -/** - @constructor - */ -JSDOC.DocTag = function(src) { - this.init(); - if (typeof src != "undefined") { - this.parse(src); - } -} - -/** - Create and initialize the properties of this. - */ -JSDOC.DocTag.prototype.init = function() { - this.title = ""; - this.type = ""; - this.name = ""; - this.isOptional = false; - this.defaultValue = ""; - this.desc = ""; - - return this; -} - -/** - Populate the properties of this from the given tag src. - @param {string} src - */ -JSDOC.DocTag.prototype.parse = function(src) { - if (typeof src != "string") throw "src must be a string not "+(typeof src); - - try { - src = this.nibbleTitle(src); - if (JSDOC.PluginManager) { - JSDOC.PluginManager.run("onDocTagSynonym", this); - } - - src = this.nibbleType(src); - - // only some tags are allowed to have names. - if (this.title == "param" || this.title == "property" || this.title == "config") { // @config is deprecated - src = this.nibbleName(src); - } - } - catch(e) { - if (LOG) LOG.warn(e); - else throw e; - } - this.desc = src; // whatever is left - - // example tags need to have whitespace preserved - if (this.title != "example") this.desc = this.desc.trim(); - - if (JSDOC.PluginManager) { - JSDOC.PluginManager.run("onDocTag", this); - } -} - -/** - Automatically called when this is stringified. - */ -JSDOC.DocTag.prototype.toString = function() { - return this.desc; -} - -/*t: - plan(1, "testing JSDOC.DocTag#toString"); - - var tag = new JSDOC.DocTag("param {object} date A valid date."); - is(""+tag, "A valid date.", "stringifying a tag returns the desc."); - */ - -/** - Find and shift off the title of a tag. - @param {string} src - @return src - */ -JSDOC.DocTag.prototype.nibbleTitle = function(src) { - if (typeof src != "string") throw "src must be a string not "+(typeof src); - - var parts = src.match(/^\s*(\S+)(?:\s([\s\S]*))?$/); - - if (parts && parts[1]) this.title = parts[1]; - if (parts && parts[2]) src = parts[2]; - else src = ""; - - return src; -} - -/*t: - plan(8, "testing JSDOC.DocTag#nibbleTitle"); - - var tag = new JSDOC.DocTag(); - - tag.init().nibbleTitle("aTitleGoesHere"); - is(tag.title, "aTitleGoesHere", "a title can be found in a single-word string."); - - var src = tag.init().nibbleTitle("aTitleGoesHere and the rest"); - is(tag.title, "aTitleGoesHere", "a title can be found in a multi-word string."); - is(src, "and the rest", "the rest is returned when the title is nibbled off."); - - src = tag.init().nibbleTitle(""); - is(tag.title, "", "given an empty string the title is empty."); - is(src, "", "the rest is empty when the tag is empty."); - - var src = tag.init().nibbleTitle(" aTitleGoesHere\n a description"); - is(tag.title, "aTitleGoesHere", "leading and trailing spaces are not part of the title."); - is(src, " a description", "leading spaces (less one) are part of the description."); - - tag.init().nibbleTitle("a.Title::Goes_Here foo"); - is(tag.title, "a.Title::Goes_Here", "titles with punctuation are allowed."); - */ - -/** - Find and shift off the type of a tag. - @requires frame/String.js - @param {string} src - @return src - */ -JSDOC.DocTag.prototype.nibbleType = function(src) { - if (typeof src != "string") throw "src must be a string not "+(typeof src); - - if (src.match(/^\s*\{/)) { - var typeRange = src.balance("{", "}"); - if (typeRange[1] == -1) { - throw "Malformed comment tag ignored. Tag type requires an opening { and a closing }: "+src; - } - this.type = src.substring(typeRange[0]+1, typeRange[1]).trim(); - this.type = this.type.replace(/\s*,\s*/g, "|"); // multiples can be separated by , or | - src = src.substring(typeRange[1]+1); - } - - return src; -} - -/*t: - plan(5, "testing JSDOC.DocTag.parser.nibbleType"); - requires("../frame/String.js"); - - var tag = new JSDOC.DocTag(); - - tag.init().nibbleType("{String[]} aliases"); - is(tag.type, "String[]", "type can have non-alpha characters."); - - tag.init().nibbleType("{ aTypeGoesHere } etc etc"); - is(tag.type, "aTypeGoesHere", "type is trimmed."); - - tag.init().nibbleType("{ oneType, twoType ,\n threeType } etc etc"); - is(tag.type, "oneType|twoType|threeType", "multiple types can be separated by commas."); - - var error; - try { tag.init().nibbleType("{widget foo"); } - catch(e) { error = e; } - is(typeof error, "string", "malformed tag type throws error."); - isnt(error.indexOf("Malformed"), -1, "error message tells tag is malformed."); - */ - -/** - Find and shift off the name of a tag. - @requires frame/String.js - @param {string} src - @return src - */ -JSDOC.DocTag.prototype.nibbleName = function(src) { - if (typeof src != "string") throw "src must be a string not "+(typeof src); - - src = src.trim(); - - // is optional? - if (src.charAt(0) == "[") { - var nameRange = src.balance("[", "]"); - if (nameRange[1] == -1) { - throw "Malformed comment tag ignored. Tag optional name requires an opening [ and a closing ]: "+src; - } - this.name = src.substring(nameRange[0]+1, nameRange[1]).trim(); - this.isOptional = true; - - src = src.substring(nameRange[1]+1); - - // has default value? - var nameAndValue = this.name.split("="); - if (nameAndValue.length) { - this.name = nameAndValue.shift().trim(); - this.defaultValue = nameAndValue.join("="); - } - } - else { - var parts = src.match(/^(\S+)(?:\s([\s\S]*))?$/); - if (parts) { - if (parts[1]) this.name = parts[1]; - if (parts[2]) src = parts[2].trim(); - else src = ""; - } - } - - return src; -} - -/*t: - requires("../frame/String.js"); - plan(9, "testing JSDOC.DocTag.parser.nibbleName"); - - var tag = new JSDOC.DocTag(); - - tag.init().nibbleName("[foo] This is a description."); - is(tag.isOptional, true, "isOptional syntax is detected."); - is(tag.name, "foo", "optional param name is found."); - - tag.init().nibbleName("[foo] This is a description."); - is(tag.isOptional, true, "isOptional syntax is detected when no type."); - is(tag.name, "foo", "optional param name is found when no type."); - - tag.init().nibbleName("[foo=7] This is a description."); - is(tag.name, "foo", "optional param name is found when default value."); - is(tag.defaultValue, 7, "optional param default value is found when default value."); - - //tag.init().nibbleName("[foo= a value] This is a description."); - //is(tag.defaultValue, " a value", "optional param default value is found when default value has spaces (issue #112)."); - - tag.init().nibbleName("[foo=[]] This is a description."); - is(tag.defaultValue, "[]", "optional param default value is found when default value is [] (issue #95)."); - - tag.init().nibbleName("[foo=a=b] This is a description."); - is(tag.name, "foo", "optional param name is found when default value is a=b."); - is(tag.defaultValue, "a=b", "optional param default value is found when default value is a=b.") - */ - -/*t: - plan(32, "Testing JSDOC.DocTag.parser."); - requires("../frame/String.js"); - - var tag = new JSDOC.DocTag(); - - is(typeof tag, "object", "JSDOC.DocTag.parser with an empty string returns an object."); - is(typeof tag.title, "string", "returned object has a string property 'title'."); - is(typeof tag.type, "string", "returned object has a string property 'type'."); - is(typeof tag.name, "string", "returned object has a string property 'name'."); - is(typeof tag.defaultValue, "string", "returned object has a string property 'defaultValue'."); - is(typeof tag.isOptional, "boolean", "returned object has a boolean property 'isOptional'."); - is(typeof tag.desc, "string", "returned object has a string property 'desc'."); - - tag = new JSDOC.DocTag("param {widget} foo"); - is(tag.title, "param", "param title is found."); - is(tag.name, "foo", "param name is found when desc is missing."); - is(tag.desc, "", "param desc is empty when missing."); - - tag = new JSDOC.DocTag("param {object} date A valid date."); - is(tag.name, "date", "param name is found with a type."); - is(tag.type, "object", "param type is found."); - is(tag.desc, "A valid date.", "param desc is found with a type."); - - tag = new JSDOC.DocTag("param aName a description goes\n here."); - is(tag.name, "aName", "param name is found without a type."); - is(tag.desc, "a description goes\n here.", "param desc is found without a type."); - - tag = new JSDOC.DocTag("param {widget}"); - is(tag.name, "", "param name is empty when it is not given."); - - tag = new JSDOC.DocTag("param {widget} [foo] This is a description."); - is(tag.name, "foo", "optional param name is found."); - - tag = new JSDOC.DocTag("return {aType} This is a description."); - is(tag.type, "aType", "when return tag has no name, type is found."); - is(tag.desc, "This is a description.", "when return tag has no name, desc is found."); - - tag = new JSDOC.DocTag("author Joe Coder "); - is(tag.title, "author", "author tag has a title."); - is(tag.type, "", "the author tag has no type."); - is(tag.name, "", "the author tag has no name."); - is(tag.desc, "Joe Coder ", "author tag has desc."); - - tag = new JSDOC.DocTag("private \t\n "); - is(tag.title, "private", "private tag has a title."); - is(tag.type, "", "the private tag has no type."); - is(tag.name, "", "the private tag has no name."); - is(tag.desc, "", "private tag has no desc."); - - tag = new JSDOC.DocTag("example\n example(code);\n more();"); - is(tag.desc, " example(code);\n more();", "leading whitespace (less one) in examples code is preserved."); - - tag = new JSDOC.DocTag("param theName \n"); - is(tag.name, "theName", "name only is found."); - - tag = new JSDOC.DocTag("type theDesc \n"); - is(tag.desc, "theDesc", "desc only is found."); - - tag = new JSDOC.DocTag("type {theType} \n"); - is(tag.type, "theType", "type only is found."); - - tag = new JSDOC.DocTag(""); - is(tag.title, "", "title is empty when tag is empty."); - */ \ No newline at end of file diff --git a/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js b/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js deleted file mode 100644 index 02275a6..0000000 --- a/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js +++ /dev/null @@ -1,140 +0,0 @@ -/** - @constructor - @param [opt] Used to override the commandline options. Useful for testing. - @version $Id: JsDoc.js 831 2010-03-09 14:24:56Z micmath $ -*/ -JSDOC.JsDoc = function(/**object*/ opt) { - if (opt) { - JSDOC.opt = opt; - } - - if (JSDOC.opt.h) { - JSDOC.usage(); - quit(); - } - - // defend against options that are not sane - if (JSDOC.opt._.length == 0) { - LOG.warn("No source files to work on. Nothing to do."); - quit(); - } - if (JSDOC.opt.t === true || JSDOC.opt.d === true) { - JSDOC.usage(); - } - - if (typeof JSDOC.opt.d == "string") { - if (!JSDOC.opt.d.charAt(JSDOC.opt.d.length-1).match(/[\\\/]/)) { - JSDOC.opt.d = JSDOC.opt.d+"/"; - } - LOG.inform("Output directory set to '"+JSDOC.opt.d+"'."); - IO.mkPath(JSDOC.opt.d); - } - if (JSDOC.opt.e) IO.setEncoding(JSDOC.opt.e); - - // the -r option: scan source directories recursively - if (typeof JSDOC.opt.r == "boolean") JSDOC.opt.r = 10; - else if (!isNaN(parseInt(JSDOC.opt.r))) JSDOC.opt.r = parseInt(JSDOC.opt.r); - else JSDOC.opt.r = 1; - - // the -D option: define user variables - var D = {}; - if (JSDOC.opt.D) { - for (var i = 0; i < JSDOC.opt.D.length; i++) { - var param = JSDOC.opt.D[i]; - // remove first and last character if both == " - if ( - param.length > 1 - && param.charAt(0) == '"' - && param.charAt(param.length-1) == '"' - ) { - param = param.substr(1, param.length-2); - } - var defineParts = param.split(":"); - if (defineParts && defineParts.length > 1) { - for ( var dpIdx = 2; dpIdx < defineParts.length; dpIdx++ ) { - defineParts[1] += ':' + defineParts[dpIdx]; - } - D[defineParts[0]] = defineParts[1]; - } - } - } - JSDOC.opt.D = D; - // combine any conf file D options with the commandline D options - if (defined(JSDOC.conf)) for (var c in JSDOC.conf.D) { - if (!defined(JSDOC.opt.D[c])) { - JSDOC.opt.D[c] = JSDOC.conf.D[c]; - } - } - - // Give plugins a chance to initialize - if (defined(JSDOC.PluginManager)) { - JSDOC.PluginManager.run("onInit", JSDOC.opt); - } - - JSDOC.opt.srcFiles = JSDOC.JsDoc._getSrcFiles(); - JSDOC.JsDoc._parseSrcFiles(); - JSDOC.JsDoc.symbolSet = JSDOC.Parser.symbols; -} - -/** - Retrieve source file list. - @returns {String[]} The pathnames of the files to be parsed. - */ -JSDOC.JsDoc._getSrcFiles = function() { - JSDOC.JsDoc.srcFiles = []; - - var ext = ["js"]; - if (JSDOC.opt.x) { - ext = JSDOC.opt.x.split(",").map(function($) {return $.toLowerCase()}); - } - - for (var i = 0; i < JSDOC.opt._.length; i++) { - JSDOC.JsDoc.srcFiles = JSDOC.JsDoc.srcFiles.concat( - IO.ls(JSDOC.opt._[i], JSDOC.opt.r).filter( - function($) { - var thisExt = $.split(".").pop().toLowerCase(); - - if (JSDOC.opt.E) { - for(var n = 0; n < JSDOC.opt.E.length; n++) { - if ($.match(new RegExp(JSDOC.opt.E[n]))) { - LOG.inform("Excluding " + $); - return false; // if the file matches the regex then it's excluded. - } - } - } - - return (ext.indexOf(thisExt) > -1); // we're only interested in files with certain extensions - } - ) - ); - } - - return JSDOC.JsDoc.srcFiles; -} - -JSDOC.JsDoc._parseSrcFiles = function() { - JSDOC.Parser.init(); - for (var i = 0, l = JSDOC.JsDoc.srcFiles.length; i < l; i++) { - var srcFile = JSDOC.JsDoc.srcFiles[i]; - - if (JSDOC.opt.v) LOG.inform("Parsing file: " + srcFile); - - try { - var src = IO.readFile(srcFile); - } - catch(e) { - LOG.warn("Can't read source file '"+srcFile+"': "+e.message); - } - - var tr = new JSDOC.TokenReader(); - var ts = new JSDOC.TokenStream(tr.tokenize(new JSDOC.TextStream(src))); - - JSDOC.Parser.parse(ts, srcFile); - - } - JSDOC.Parser.finish(); - - if (JSDOC.PluginManager) { - JSDOC.PluginManager.run("onFinishedParsing", JSDOC.Parser.symbols); - } -} diff --git a/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js b/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js deleted file mode 100644 index bcaebc9..0000000 --- a/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js +++ /dev/null @@ -1,109 +0,0 @@ -/** - @constructor -*/ -JSDOC.JsPlate = function(templateFile) { - if (templateFile) this.template = IO.readFile(templateFile); - - this.templateFile = templateFile; - this.code = ""; - this.parse(); -} - -JSDOC.JsPlate.prototype.parse = function() { - this.template = this.template.replace(/\{#[\s\S]+?#\}/gi, ""); - this.code = "var output=\u001e"+this.template; - - this.code = this.code.replace( - //gi, - function (match, eachName, inName) { - return "\u001e;\rvar $"+eachName+"_keys = keys("+inName+");\rfor(var $"+eachName+"_i = 0; $"+eachName+"_i < $"+eachName+"_keys.length; $"+eachName+"_i++) {\rvar $"+eachName+"_last = ($"+eachName+"_i == $"+eachName+"_keys.length-1);\rvar $"+eachName+"_key = $"+eachName+"_keys[$"+eachName+"_i];\rvar "+eachName+" = "+inName+"[$"+eachName+"_key];\routput+=\u001e"; - } - ); - this.code = this.code.replace(//g, "\u001e;\rif ($1) { output+=\u001e"); - this.code = this.code.replace(//g, "\u001e;}\relse if ($1) { output+=\u001e"); - this.code = this.code.replace(//g, "\u001e;}\relse { output+=\u001e"); - this.code = this.code.replace(/<\/(if|for)>/g, "\u001e;\r};\routput+=\u001e"); - this.code = this.code.replace( - /\{\+\s*([\s\S]+?)\s*\+\}/gi, - function (match, code) { - code = code.replace(/"/g, "\u001e"); // prevent qoute-escaping of inline code - code = code.replace(/(\r?\n)/g, " "); - return "\u001e+ ("+code+") +\u001e"; - } - ); - this.code = this.code.replace( - /\{!\s*([\s\S]+?)\s*!\}/gi, - function (match, code) { - code = code.replace(/"/g, "\u001e"); // prevent qoute-escaping of inline code - code = code.replace(/(\n)/g, " "); - return "\u001e; "+code+";\routput+=\u001e"; - } - ); - this.code = this.code+"\u001e;"; - - this.code = this.code.replace(/(\r?\n)/g, "\\n"); - this.code = this.code.replace(/"/g, "\\\""); - this.code = this.code.replace(/\u001e/g, "\""); -} - -JSDOC.JsPlate.prototype.toCode = function() { - return this.code; -} - -JSDOC.JsPlate.keys = function(obj) { - var keys = []; - if (obj.constructor.toString().indexOf("Array") > -1) { - for (var i = 0; i < obj.length; i++) { - keys.push(i); - } - } - else { - for (var i in obj) { - keys.push(i); - } - } - return keys; -}; - -JSDOC.JsPlate.values = function(obj) { - var values = []; - if (obj.constructor.toString().indexOf("Array") > -1) { - for (var i = 0; i < obj.length; i++) { - values.push(obj[i]); - } - } - else { - for (var i in obj) { - values.push(obj[i]); - } - } - return values; -}; - -JSDOC.JsPlate.prototype.process = function(data, compact) { - var keys = JSDOC.JsPlate.keys; - var values = JSDOC.JsPlate.values; - - try { - eval(this.code); - } - catch (e) { - print(">> There was an error evaluating the compiled code from template: "+this.templateFile); - print(" The error was on line "+e.lineNumber+" "+e.name+": "+e.message); - var lines = this.code.split("\r"); - if (e.lineNumber-2 >= 0) print("line "+(e.lineNumber-1)+": "+lines[e.lineNumber-2]); - print("line "+e.lineNumber+": "+lines[e.lineNumber-1]); - print(""); - } - - if (compact) { // patch by mcbain.asm - // Remove lines that contain only space-characters, usually left by lines in the template - // which originally only contained JSPlate tags or code. This makes it easier to write - // non-tricky templates which still put out nice code (not bloated with extra lines). - // Lines purposely left blank (just a line ending) are left alone. - output = output.replace(/\s+?(\r?)\n/g, "$1\n"); - } - - /*debug*///print(this.code); - return output; -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/lib/JSDOC/Lang.js b/jsdoc-toolkit/app/lib/JSDOC/Lang.js deleted file mode 100644 index 62919d7..0000000 --- a/jsdoc-toolkit/app/lib/JSDOC/Lang.js +++ /dev/null @@ -1,144 +0,0 @@ -/** - @namespace -*/ -JSDOC.Lang = { -} - -JSDOC.Lang.isBuiltin = function(name) { - return (JSDOC.Lang.isBuiltin.coreObjects.indexOf(name) > -1); -} -JSDOC.Lang.isBuiltin.coreObjects = ['_global_', 'Array', 'Boolean', 'Date', 'Error', 'Function', 'Math', 'Number', 'Object', 'RegExp', 'String']; - -JSDOC.Lang.whitespace = function(ch) { - return JSDOC.Lang.whitespace.names[ch]; -} -JSDOC.Lang.whitespace.names = { - " ": "SPACE", - "\f": "FORMFEED", - "\t": "TAB", - "\u0009": "UNICODE_TAB", - "\u000A": "UNICODE_NBR", - "\u0008": "VERTICAL_TAB" -}; - -JSDOC.Lang.newline = function(ch) { - return JSDOC.Lang.newline.names[ch]; -} -JSDOC.Lang.newline.names = { - "\n": "NEWLINE", - "\r": "RETURN", - "\u000A": "UNICODE_LF", - "\u000D": "UNICODE_CR", - "\u2029": "UNICODE_PS", - "\u2028": "UNICODE_LS" -}; - -JSDOC.Lang.keyword = function(word) { - return JSDOC.Lang.keyword.names["="+word]; -} -JSDOC.Lang.keyword.names = { - "=break": "BREAK", - "=case": "CASE", - "=catch": "CATCH", - "=const": "VAR", - "=continue": "CONTINUE", - "=default": "DEFAULT", - "=delete": "DELETE", - "=do": "DO", - "=else": "ELSE", - "=false": "FALSE", - "=finally": "FINALLY", - "=for": "FOR", - "=function": "FUNCTION", - "=if": "IF", - "=in": "IN", - "=instanceof": "INSTANCEOF", - "=new": "NEW", - "=null": "NULL", - "=return": "RETURN", - "=switch": "SWITCH", - "=this": "THIS", - "=throw": "THROW", - "=true": "TRUE", - "=try": "TRY", - "=typeof": "TYPEOF", - "=void": "VOID", - "=while": "WHILE", - "=with": "WITH", - "=var": "VAR" -}; - -JSDOC.Lang.punc = function(ch) { - return JSDOC.Lang.punc.names[ch]; -} -JSDOC.Lang.punc.names = { - ";": "SEMICOLON", - ",": "COMMA", - "?": "HOOK", - ":": "COLON", - "||": "OR", - "&&": "AND", - "|": "BITWISE_OR", - "^": "BITWISE_XOR", - "&": "BITWISE_AND", - "===": "STRICT_EQ", - "==": "EQ", - "=": "ASSIGN", - "!==": "STRICT_NE", - "!=": "NE", - "<<": "LSH", - "<=": "LE", - "<": "LT", - ">>>": "URSH", - ">>": "RSH", - ">=": "GE", - ">": "GT", - "++": "INCREMENT", - "--": "DECREMENT", - "+": "PLUS", - "-": "MINUS", - "*": "MUL", - "/": "DIV", - "%": "MOD", - "!": "NOT", - "~": "BITWISE_NOT", - ".": "DOT", - "[": "LEFT_BRACKET", - "]": "RIGHT_BRACKET", - "{": "LEFT_CURLY", - "}": "RIGHT_CURLY", - "(": "LEFT_PAREN", - ")": "RIGHT_PAREN" -}; - -JSDOC.Lang.matching = function(name) { - return JSDOC.Lang.matching.names[name]; -} -JSDOC.Lang.matching.names = { - "LEFT_PAREN": "RIGHT_PAREN", - "RIGHT_PAREN": "LEFT_PAREN", - "LEFT_CURLY": "RIGHT_CURLY", - "RIGHT_CURLY": "LEFT_CURLY", - "LEFT_BRACE": "RIGHT_BRACE", - "RIGHT_BRACE": "LEFT_BRACE" -} - -JSDOC.Lang.isNumber = function(str) { - return /^(\.[0-9]|[0-9]+\.|[0-9])[0-9]*([eE][+-][0-9]+)?$/i.test(str); -} - -JSDOC.Lang.isHexDec = function(str) { - return /^0x[0-9A-F]+$/i.test(str); -} - -JSDOC.Lang.isWordChar = function(str) { - return /^[a-zA-Z0-9$_.]+$/.test(str); -} - -JSDOC.Lang.isSpace = function(str) { - return (typeof JSDOC.Lang.whitespace(str) != "undefined"); -} - -JSDOC.Lang.isNewline = function(str) { - return (typeof JSDOC.Lang.newline(str) != "undefined"); -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/lib/JSDOC/Parser.js b/jsdoc-toolkit/app/lib/JSDOC/Parser.js deleted file mode 100644 index e489c61..0000000 --- a/jsdoc-toolkit/app/lib/JSDOC/Parser.js +++ /dev/null @@ -1,146 +0,0 @@ -if (typeof JSDOC == "undefined") JSDOC = {}; - -/** - @namespace - @requires JSDOC.Walker - @requires JSDOC.Symbol - @requires JSDOC.DocComment -*/ -JSDOC.Parser = { - conf: { - ignoreCode: JSDOC.opt.n, - ignoreAnonymous: true, // factory: true - treatUnderscoredAsPrivate: true, // factory: true - explain: false // factory: false - }, - - addSymbol: function(symbol) { - - if (JSDOC.Parser.rename) { - for (var n in JSDOC.Parser.rename) { - if (symbol.alias.indexOf(n) == 0) { - if (symbol.name == symbol.alias) { - symbol.name = symbol.name.replace(n, JSDOC.Parser.rename[n]); - } - symbol.alias = symbol.alias.replace(n, JSDOC.Parser.rename[n]); - } - } - } - - if (JSDOC.opt.S) { - if (typeof JSDOC.Parser.secureModules == "undefined") JSDOC.Parser.secureModules = {}; - if (/^exports\./.test(symbol.alias)) { - symbol.srcFile.match(/(^|[\\\/])([^\\\/]+)\.js/i); - var fileNS = RegExp.$2; - - // need to create the namespace associated with this file first - if (!JSDOC.Parser.secureModules[fileNS]) { - JSDOC.Parser.secureModules[fileNS] = 1; - var nsSymbol = new JSDOC.Symbol(fileNS, [], "GLOBAL", new JSDOC.DocComment("")); - nsSymbol.isNamespace = true; - nsSymbol.srcFile = ""; - nsSymbol.isPrivate = false; - nsSymbol.srcFile = symbol.srcFile; - nsSymbol.desc = (JSDOC.Parser.symbols.getSymbol(symbol.srcFile) || {desc: ""}).desc; - JSDOC.Parser.addSymbol(nsSymbol); - } - - symbol.alias = symbol.alias.replace(/^exports\./, fileNS + '.'); - symbol.name = symbol.name.replace(/^exports\./, ''); - symbol.memberOf = fileNS; - symbol.isStatic = true; - } - } - - // if a symbol alias is documented more than once the first one with the user docs wins - if (JSDOC.Parser.symbols.hasSymbol(symbol.alias)) { - var oldSymbol = JSDOC.Parser.symbols.getSymbol(symbol.alias); - if (oldSymbol.comment.isUserComment) { - if (JSDOC.opt.m) return; - if (symbol.comment.isUserComment) { // old and new are both documented - LOG.warn("The symbol '"+symbol.alias+"' is documented more than once."); - return; - } - else { // old is documented but new isn't - return; - } - } - } - - // we don't document anonymous things - if (JSDOC.Parser.conf.ignoreAnonymous && symbol.name.match(/\$anonymous\b/)) return; - - // uderscored things may be treated as if they were marked private, this cascades - if (JSDOC.Parser.conf.treatUnderscoredAsPrivate && symbol.name.match(/[.#-]_[^.#-]+$/)) { - if (!symbol.comment.getTag("public").length > 0) symbol.isPrivate = true; - } - - // -p flag is required to document private things - if (!JSDOC.opt.p && symbol.isPrivate) return; // issue #161 fixed by mcbain.asm - - // ignored things are not documented, this doesn't cascade - if (symbol.isIgnored) return; - JSDOC.Parser.symbols.addSymbol(symbol); - }, - - addBuiltin: function(name) { - var builtin = new JSDOC.Symbol(name, [], "CONSTRUCTOR", new JSDOC.DocComment("")); - builtin.isNamespace = true; - builtin.srcFile = ""; - builtin.isPrivate = false; - JSDOC.Parser.addSymbol(builtin); - return builtin; - }, - - init: function() { - JSDOC.Parser.symbols = new JSDOC.SymbolSet(); - JSDOC.Parser.walker = new JSDOC.Walker(); - }, - - finish: function() { - JSDOC.Parser.symbols.relate(); - - // make a litle report about what was found - if (JSDOC.Parser.conf.explain) { - var symbols = JSDOC.Parser.symbols.toArray(); - var srcFile = ""; - for (var i = 0, l = symbols.length; i < l; i++) { - var symbol = symbols[i]; - if (srcFile != symbol.srcFile) { - srcFile = symbol.srcFile; - print("\n"+srcFile+"\n-------------------"); - } - print(i+":\n alias => "+symbol.alias + "\n name => "+symbol.name+ "\n isa => "+symbol.isa + "\n memberOf => " + symbol.memberOf + "\n isStatic => " + symbol.isStatic + ", isInner => " + symbol.isInner+ ", isPrivate => " + symbol.isPrivate); - } - print("-------------------\n"); - } - } -} - -JSDOC.Parser.parse = function(/**JSDOC.TokenStream*/ts, /**String*/srcFile) { - JSDOC.Symbol.srcFile = (srcFile || ""); - JSDOC.DocComment.shared = ""; // shared comments don't cross file boundaries - - if (!JSDOC.Parser.walker) JSDOC.Parser.init(); - JSDOC.Parser.walker.walk(ts); // adds to our symbols - - // filter symbols by option - for (var p = JSDOC.Parser.symbols._index.first(); p; p = JSDOC.Parser.symbols._index.next()) { - var symbol = p.value; - - if (!symbol) continue; - - if (symbol.is("FILE") || symbol.is("GLOBAL")) { - continue; - } - else if (!JSDOC.opt.a && !symbol.comment.isUserComment) { - JSDOC.Parser.symbols.deleteSymbol(symbol.alias); - } - - if (/#$/.test(symbol.alias)) { // we don't document prototypes - JSDOC.Parser.symbols.deleteSymbol(symbol.alias); - } - } - - return JSDOC.Parser.symbols.toArray(); -} diff --git a/jsdoc-toolkit/app/lib/JSDOC/PluginManager.js b/jsdoc-toolkit/app/lib/JSDOC/PluginManager.js deleted file mode 100644 index 9c91193..0000000 --- a/jsdoc-toolkit/app/lib/JSDOC/PluginManager.js +++ /dev/null @@ -1,33 +0,0 @@ -/** - @namespace Holds functionality related to running plugins. -*/ -JSDOC.PluginManager = { -} - -/** - @param name A unique name that identifies that plugin. - @param handlers A collection of named functions. The names correspond to hooks in the core code. -*/ -JSDOC.PluginManager.registerPlugin = function(/**String*/name, /**Object*/handlers) { - if (!defined(JSDOC.PluginManager.plugins)) - /** The collection of all plugins. Requires a unique name for each. - */ - JSDOC.PluginManager.plugins = {}; - - - JSDOC.PluginManager.plugins[name] = handlers; -} - -/** - @param hook The name of the hook that is being caught. - @param target Any object. This will be passed as the only argument to the handler whose - name matches the hook name. Handlers cannot return a value, so must modify the target - object to have an effect. -*/ -JSDOC.PluginManager.run = function(/**String*/hook, /**Mixed*/target) { - for (var name in JSDOC.PluginManager.plugins) { - if (defined(JSDOC.PluginManager.plugins[name][hook])) { - JSDOC.PluginManager.plugins[name][hook](target); - } - } -} diff --git a/jsdoc-toolkit/app/lib/JSDOC/Symbol.js b/jsdoc-toolkit/app/lib/JSDOC/Symbol.js deleted file mode 100644 index 1aa44da..0000000 --- a/jsdoc-toolkit/app/lib/JSDOC/Symbol.js +++ /dev/null @@ -1,644 +0,0 @@ -if (typeof JSDOC == "undefined") JSDOC = {}; - -/** - Create a new Symbol. - @class Represents a symbol in the source code. - */ -JSDOC.Symbol = function() { - this.init(); - if (arguments.length) this.populate.apply(this, arguments); -} - -JSDOC.Symbol.count = 0; - -JSDOC.Symbol.prototype.init = function() { - this._name = ""; - this._params = []; - this.$args = []; - this.addOn = ""; - this.alias = ""; - this.augments = []; - this.author = ""; - this.classDesc = ""; - this.comment = {}; - this.defaultValue = undefined; - this.deprecated = ""; - this.desc = ""; - this.example = []; - this.exceptions = []; - this.fires = []; - this.id = JSDOC.Symbol.count++; - this.inherits = []; - this.inheritsFrom = []; - this.isa = "OBJECT"; - this.isConstant = false; - this.isEvent = false; - this.isIgnored = false; - this.isInner = false; - this.isNamespace = false; - this.isPrivate = false; - this.isStatic = false; - this.memberOf = ""; - this.methods = []; - this.properties = []; - this.requires = []; - this.returns = []; - this.see = []; - this.since = ""; - this.srcFile = {}; - this.type = ""; - this.version = ""; -} - -JSDOC.Symbol.prototype.serialize = function() { - var keys = []; - for (var p in this) { - keys.push (p); - } - keys = keys.sort(); - - var out = ""; - for (var i in keys) { - if (typeof this[keys[i]] == "function") continue; - out += keys[i]+" => "+Dumper.dump(this[keys[i]])+",\n"; - } - return "\n{\n" + out + "}\n"; -} - -JSDOC.Symbol.prototype.clone = function() { - var clone = new JSDOC.Symbol(); - clone.populate.apply(clone, this.$args); // repopulate using the original arguments - clone.srcFile = this.srcFile; // not the current srcFile, the one when the original was made - return clone; -} - -JSDOC.Symbol.prototype.__defineSetter__("name", - function(n) { n = n.replace(/^_global_[.#-]/, ""); n = n.replace(/\.prototype\.?/g, '#'); this._name = n; } -); -JSDOC.Symbol.prototype.__defineGetter__("name", - function() { return this._name; } -); -JSDOC.Symbol.prototype.__defineSetter__("params", - function(v) { - for (var i = 0, l = v.length; i < l; i++) { - if (v[i].constructor != JSDOC.DocTag) { // may be a generic object parsed from signature, like {type:..., name:...} - this._params[i] = new JSDOC.DocTag("param"+((v[i].type)?" {"+v[i].type+"}":"")+" "+v[i].name); - } - else { - this._params[i] = v[i]; - } - } - } -); -JSDOC.Symbol.prototype.__defineGetter__("params", - function() { return this._params; } -); - -JSDOC.Symbol.prototype.getEvents = function() { - var events = []; - for (var i = 0, l = this.methods.length; i < l; i++) { - if (this.methods[i].isEvent) { - this.methods[i].name = this.methods[i].name.replace("event:", ""); - events.push(this.methods[i]); - } - } - return events; -} - -JSDOC.Symbol.prototype.getMethods = function() { - var nonEvents = []; - for (var i = 0, l = this.methods.length; i < l; i++) { - if (!this.methods[i].isEvent) { - nonEvents.push(this.methods[i]); - } - } - return nonEvents; -} - - -JSDOC.Symbol.prototype.populate = function( - /** String */ name, - /** Object[] */ params, - /** String */ isa, - /** JSDOC.DocComment */ comment -) { - this.$args = arguments; - - this.name = name; - this.alias = this.name; - - this.params = params; - this.isa = (isa == "VIRTUAL")? "OBJECT":isa; - this.comment = comment || new JSDOC.DocComment(""); - this.srcFile = JSDOC.Symbol.srcFile; - - if (this.is("FILE") && !this.alias) this.alias = this.srcFile; - - this.setTags(); - - if (typeof JSDOC.PluginManager != "undefined") { - JSDOC.PluginManager.run("onSymbol", this); - } -} - -JSDOC.Symbol.prototype.setTags = function() { - // @author - var authors = this.comment.getTag("author"); - if (authors.length) { - this.author = authors.map(function($){return $.desc;}).join(", "); - } - - /*t: - plan(34, "testing JSDOC.Symbol"); - - requires("../lib/JSDOC/DocComment.js"); - requires("../frame/String.js"); - requires("../lib/JSDOC/DocTag.js"); - - var sym = new JSDOC.Symbol("foo", [], "OBJECT", new JSDOC.DocComment("/**@author Joe Smith*"+"/")); - is(sym.author, "Joe Smith", "@author tag, author is found."); - */ - - // @desc - var descs = this.comment.getTag("desc"); - if (descs.length) { - this.desc = descs.map(function($){return $.desc;}).join("\n"); // multiple descriptions are concatenated into one - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "OBJECT", new JSDOC.DocComment("/**@desc This is a description.*"+"/")); - is(sym.desc, "This is a description.", "@desc tag, description is found."); - */ - - // @overview - if (this.is("FILE")) { - if (!this.alias) this.alias = this.srcFile; - - var overviews = this.comment.getTag("overview"); - if (overviews.length) { - this.desc = [this.desc].concat(overviews.map(function($){return $.desc;})).join("\n"); - } - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "FILE", new JSDOC.DocComment("/**@overview This is an overview.*"+"/")); - is(sym.desc, "\nThis is an overview.", "@overview tag, description is found."); - */ - - // @since - var sinces = this.comment.getTag("since"); - if (sinces.length) { - this.since = sinces.map(function($){return $.desc;}).join(", "); - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "FILE", new JSDOC.DocComment("/**@since 1.01*"+"/")); - is(sym.since, "1.01", "@since tag, description is found."); - */ - - // @constant - if (this.comment.getTag("constant").length) { - this.isConstant = true; - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "FILE", new JSDOC.DocComment("/**@constant*"+"/")); - is(sym.isConstant, true, "@constant tag, isConstant set."); - */ - - // @version - var versions = this.comment.getTag("version"); - if (versions.length) { - this.version = versions.map(function($){return $.desc;}).join(", "); - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "FILE", new JSDOC.DocComment("/**@version 2.0x*"+"/")); - is(sym.version, "2.0x", "@version tag, version is found."); - */ - - // @deprecated - var deprecateds = this.comment.getTag("deprecated"); - if (deprecateds.length) { - this.deprecated = deprecateds.map(function($){return $.desc;}).join("\n"); - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "FILE", new JSDOC.DocComment("/**@deprecated Use other method.*"+"/")); - is(sym.deprecated, "Use other method.", "@deprecated tag, desc is found."); - */ - - // @example - var examples = this.comment.getTag("example"); - if (examples.length) { - this.example = examples.map( - // trim trailing whitespace - function($) { - $.desc = $.desc.replace(/\s+$/, ""); - return $; - } - ); - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "FILE", new JSDOC.DocComment("/**@example This\n is an example. \n*"+"/")); - isnt(typeof sym.example[0], "undefined", "@example tag, creates sym.example array."); - is(sym.example[0], "This\n is an example.", "@example tag, desc is found."); - */ - - // @see - var sees = this.comment.getTag("see"); - if (sees.length) { - var thisSee = this.see; - sees.map(function($){thisSee.push($.desc);}); - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "FILE", new JSDOC.DocComment("/**@see The other thing.*"+"/")); - is(sym.see, "The other thing.", "@see tag, desc is found."); - */ - - // @class - var classes = this.comment.getTag("class"); - if (classes.length) { - this.isa = "CONSTRUCTOR"; - this.classDesc = classes[0].desc; // desc can't apply to the constructor as there is none. - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "OBJECT", new JSDOC.DocComment("/**@class This describes the class.*"+"/")); - is(sym.isa, "CONSTRUCTOR", "@class tag, makes symbol a constructor."); - is(sym.classDesc, "This describes the class.", "@class tag, class description is found."); - */ - - // @namespace - var namespaces = this.comment.getTag("namespace"); - if (namespaces.length) { - this.classDesc = namespaces[0].desc; - this.isNamespace = true; - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "OBJECT", new JSDOC.DocComment("/**@namespace This describes the namespace.*"+"/")); - is(sym.classDesc, "This describes the namespace.", "@namespace tag, class description is found."); - */ - - // @param - var params = this.comment.getTag("param"); - if (params.length) { - // user-defined params overwrite those with same name defined by the parser - var thisParams = this.params; - - if (thisParams.length == 0) { // none exist yet, so just bung all these user-defined params straight in - this.params = params; - } - else { // need to overlay these user-defined params on to existing parser-defined params - for (var i = 0, l = params.length; i < l; i++) { - if (thisParams[i]) { - if (params[i].type) thisParams[i].type = params[i].type; - thisParams[i].name = params[i].name; - thisParams[i].desc = params[i].desc; - thisParams[i].isOptional = params[i].isOptional; - thisParams[i].defaultValue = params[i].defaultValue; - } - else thisParams[i] = params[i]; - } - } - } - - /*t: - var sym = new JSDOC.Symbol("foo", [{type: "array", name: "pages"}], "FUNCTION", new JSDOC.DocComment("/**Description.*"+"/")); - is(sym.params.length, 1, "parser defined param is found."); - - sym = new JSDOC.Symbol("foo", [], "FUNCTION", new JSDOC.DocComment("/**Description.\n@param {array} pages*"+"/")); - is(sym.params.length, 1, "user defined param is found."); - is(sym.params[0].type, "array", "user defined param type is found."); - is(sym.params[0].name, "pages", "user defined param name is found."); - - sym = new JSDOC.Symbol("foo", [{type: "array", name: "pages"}], "FUNCTION", new JSDOC.DocComment("/**Description.\n@param {string} uid*"+"/")); - is(sym.params.length, 1, "user defined param overwrites parser defined param."); - is(sym.params[0].type, "string", "user defined param type overwrites parser defined param type."); - is(sym.params[0].name, "uid", "user defined param name overwrites parser defined param name."); - - sym = new JSDOC.Symbol("foo", [{type: "array", name: "pages"}, {type: "number", name: "count"}], "FUNCTION", new JSDOC.DocComment("/**Description.\n@param {string} uid*"+"/")); - is(sym.params.length, 2, "user defined params overlay parser defined params."); - is(sym.params[1].type, "number", "user defined param type overlays parser defined param type."); - is(sym.params[1].name, "count", "user defined param name overlays parser defined param name."); - - sym = new JSDOC.Symbol("foo", [], "FUNCTION", new JSDOC.DocComment("/**Description.\n@param {array} pages The pages description.*"+"/")); - is(sym.params.length, 1, "user defined param with description is found."); - is(sym.params[0].desc, "The pages description.", "user defined param description is found."); - */ - - // @constructor - if (this.comment.getTag("constructor").length) { - this.isa = "CONSTRUCTOR"; - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "OBJECT", new JSDOC.DocComment("/**@constructor*"+"/")); - is(sym.isa, "CONSTRUCTOR", "@constructor tag, makes symbol a constructor."); - */ - - // @static - if (this.comment.getTag("static").length) { - this.isStatic = true; - if (this.isa == "CONSTRUCTOR") { - this.isNamespace = true; - } - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "OBJECT", new JSDOC.DocComment("/**@static\n@constructor*"+"/")); - is(sym.isStatic, true, "@static tag, makes isStatic true."); - is(sym.isNamespace, true, "@static and @constructor tag, makes isNamespace true."); - */ - - // @inner - if (this.comment.getTag("inner").length) { - this.isInner = true; - this.isStatic = false; - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "OBJECT", new JSDOC.DocComment("/**@inner*"+"/")); - is(sym.isStatic, false, "@inner tag, makes isStatic false."); - is(sym.isInner, true, "@inner makes isInner true."); - */ - - // @name - var names = this.comment.getTag("name"); - if (names.length) { - this.name = names[0].desc; - } - - /*t: - // todo - */ - - // @field - if (this.comment.getTag("field").length) { - this.isa = "OBJECT"; - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "FUNCTION", new JSDOC.DocComment("/**@field*"+"/")); - is(sym.isa, "OBJECT", "@field tag, makes symbol an object."); - */ - - // @function - if (this.comment.getTag("function").length) { - this.isa = "FUNCTION"; - if (/event:/.test(this.alias)) this.isEvent = true; - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "OBJECT", new JSDOC.DocComment("/**@function*"+"/")); - is(sym.isa, "FUNCTION", "@function tag, makes symbol a function."); - */ - - // @event - var events = this.comment.getTag("event"); - if (events.length) { - this.isa = "FUNCTION"; - this.isEvent = true; - if (!/event:/.test(this.alias)) - this.alias = this.alias.replace(/^(.*[.#-])([^.#-]+)$/, "$1event:$2"); - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "OBJECT", new JSDOC.DocComment("/**@event*"+"/")); - is(sym.isa, "FUNCTION", "@event tag, makes symbol a function."); - is(sym.isEvent, true, "@event makes isEvent true."); - */ - - // @fires - var fires = this.comment.getTag("fires"); - if (fires.length) { - for (var i = 0; i < fires.length; i++) { - this.fires.push(fires[i].desc); - } - } - - /*t: - // todo - */ - - // @property - var properties = this.comment.getTag("property"); - if (properties.length) { - thisProperties = this.properties; - for (var i = 0; i < properties.length; i++) { - var property = new JSDOC.Symbol(this.alias+"#"+properties[i].name, [], "OBJECT", new JSDOC.DocComment("/**"+properties[i].desc+"*/")); - // TODO: shouldn't the following happen in the addProperty method of Symbol? - if (properties[i].type) property.type = properties[i].type; - if (properties[i].defaultValue) property.defaultValue = properties[i].defaultValue; - this.addProperty(property); - if (!JSDOC.Parser.symbols.getSymbolByName(property.name)) - JSDOC.Parser.addSymbol(property); - } - } - - /*t: - // todo - */ - - // @return - var returns = this.comment.getTag("return"); - if (returns.length) { // there can be many return tags in a single doclet - this.returns = returns; - this.type = returns.map(function($){return $.type}).join(", "); - } - - /*t: - // todo - */ - - // @exception - this.exceptions = this.comment.getTag("throws"); - - /*t: - // todo - */ - - // @requires - var requires = this.comment.getTag("requires"); - if (requires.length) { - this.requires = requires.map(function($){return $.desc}); - } - - /*t: - // todo - */ - - // @type - var types = this.comment.getTag("type"); - if (types.length) { - this.type = types[0].desc; //multiple type tags are ignored - } - - /*t: - // todo - */ - - // @private - if (this.comment.getTag("private").length || this.isInner) { - this.isPrivate = true; - } - - // @ignore - if (this.comment.getTag("ignore").length) { - this.isIgnored = true; - } - - /*t: - // todo - */ - - // @inherits ... as ... - var inherits = this.comment.getTag("inherits"); - if (inherits.length) { - for (var i = 0; i < inherits.length; i++) { - if (/^\s*([a-z$0-9_.#:-]+)(?:\s+as\s+([a-z$0-9_.#:-]+))?/i.test(inherits[i].desc)) { - var inAlias = RegExp.$1; - var inAs = RegExp.$2 || inAlias; - - if (inAlias) inAlias = inAlias.replace(/\.prototype\.?/g, "#"); - - if (inAs) { - inAs = inAs.replace(/\.prototype\.?/g, "#"); - inAs = inAs.replace(/^this\.?/, "#"); - } - - if (inAs.indexOf(inAlias) != 0) { //not a full namepath - var joiner = "."; - if (this.alias.charAt(this.alias.length-1) == "#" || inAs.charAt(0) == "#") { - joiner = ""; - } - inAs = this.alias + joiner + inAs; - } - } - this.inherits.push({alias: inAlias, as: inAs}); - } - } - - /*t: - // todo - */ - - // @augments - this.augments = this.comment.getTag("augments"); - - // @default - var defaults = this.comment.getTag("default"); - if (defaults.length) { - if (this.is("OBJECT")) { - this.defaultValue = defaults[0].desc; - } - } - - /*t: - // todo - */ - - // @memberOf - var memberOfs = this.comment.getTag("memberOf"); - if (memberOfs.length) { - this.memberOf = memberOfs[0].desc; - this.memberOf = this.memberOf.replace(/\.prototype\.?/g, "#"); - } - - /*t: - // todo - */ - - // @public - if (this.comment.getTag("public").length) { - this.isPrivate = false; - } - - /*t: - // todo - */ - - if (JSDOC.PluginManager) { - JSDOC.PluginManager.run("onSetTags", this); - } -} - -JSDOC.Symbol.prototype.is = function(what) { - return this.isa === what; -} - -JSDOC.Symbol.prototype.isBuiltin = function() { - return JSDOC.Lang.isBuiltin(this.alias); -} - -JSDOC.Symbol.prototype.setType = function(/**String*/comment, /**Boolean*/overwrite) { - if (!overwrite && this.type) return; - var typeComment = JSDOC.DocComment.unwrapComment(comment); - this.type = typeComment; -} - -JSDOC.Symbol.prototype.inherit = function(symbol) { - if (!this.hasMember(symbol.name) && !symbol.isInner) { - if (symbol.is("FUNCTION")) - this.methods.push(symbol); - else if (symbol.is("OBJECT")) - this.properties.push(symbol); - } -} - -JSDOC.Symbol.prototype.hasMember = function(name) { - return (this.hasMethod(name) || this.hasProperty(name)); -} - -JSDOC.Symbol.prototype.addMember = function(symbol) { - if (symbol.is("FUNCTION")) { this.addMethod(symbol); } - else if (symbol.is("OBJECT")) { this.addProperty(symbol); } -} - -JSDOC.Symbol.prototype.hasMethod = function(name) { - var thisMethods = this.methods; - for (var i = 0, l = thisMethods.length; i < l; i++) { - if (thisMethods[i].name == name) return true; - if (thisMethods[i].alias == name) return true; - } - return false; -} - -JSDOC.Symbol.prototype.addMethod = function(symbol) { - var methodAlias = symbol.alias; - var thisMethods = this.methods; - for (var i = 0, l = thisMethods.length; i < l; i++) { - if (thisMethods[i].alias == methodAlias) { - thisMethods[i] = symbol; // overwriting previous method - return; - } - } - thisMethods.push(symbol); // new method with this alias -} - -JSDOC.Symbol.prototype.hasProperty = function(name) { - var thisProperties = this.properties; - for (var i = 0, l = thisProperties.length; i < l; i++) { - if (thisProperties[i].name == name) return true; - if (thisProperties[i].alias == name) return true; - } - return false; -} - -JSDOC.Symbol.prototype.addProperty = function(symbol) { - var propertyAlias = symbol.alias; - var thisProperties = this.properties; - for (var i = 0, l = thisProperties.length; i < l; i++) { - if (thisProperties[i].alias == propertyAlias) { - thisProperties[i] = symbol; // overwriting previous property - return; - } - } - - thisProperties.push(symbol); // new property with this alias -} - -JSDOC.Symbol.srcFile = ""; //running reference to the current file being parsed diff --git a/jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js b/jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js deleted file mode 100644 index 8e3a2eb..0000000 --- a/jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js +++ /dev/null @@ -1,243 +0,0 @@ -/** @constructor */ -JSDOC.SymbolSet = function() { - this.init(); -} - -JSDOC.SymbolSet.prototype.init = function() { - this._index = new Hash(); -} - -JSDOC.SymbolSet.prototype.keys = function() { - return this._index.keys(); -} - -JSDOC.SymbolSet.prototype.hasSymbol = function(alias) { - return this._index.hasKey(alias); -} - -JSDOC.SymbolSet.prototype.addSymbol = function(symbol) { - if (JSDOC.opt.a && this.hasSymbol(symbol.alias)) { - LOG.warn("Overwriting symbol documentation for: " + symbol.alias + "."); - this.deleteSymbol(symbol.alias); - } - this._index.set(symbol.alias, symbol); -} - -JSDOC.SymbolSet.prototype.getSymbol = function(alias) { - if (this.hasSymbol(alias)) return this._index.get(alias); -} - -JSDOC.SymbolSet.prototype.getSymbolByName = function(name) { - for (var p = this._index.first(); p; p = this._index.next()) { - var symbol = p.value; - if (symbol.name == name) return symbol; - } -} - -JSDOC.SymbolSet.prototype.toArray = function() { - return this._index.values(); -} - -JSDOC.SymbolSet.prototype.deleteSymbol = function(alias) { - if (!this.hasSymbol(alias)) return; - this._index.drop(alias); -} - -JSDOC.SymbolSet.prototype.renameSymbol = function(oldName, newName) { - // todo: should check if oldname or newname already exist - this._index.replace(oldName, newName); - this._index.get(newName).alias = newName; - return newName; -} - -JSDOC.SymbolSet.prototype.relate = function() { - this.resolveBorrows(); - this.resolveMemberOf(); - this.resolveAugments(); -} - -JSDOC.SymbolSet.prototype.resolveBorrows = function() { - for (var p = this._index.first(); p; p = this._index.next()) { - var symbol = p.value; - if (symbol.is("FILE") || symbol.is("GLOBAL")) continue; - - var borrows = symbol.inherits; - for (var i = 0; i < borrows.length; i++) { - -if (/#$/.test(borrows[i].alias)) { - LOG.warn("Attempted to borrow entire instance of "+borrows[i].alias+" but that feature is not yet implemented."); - return; -} - var borrowed = this.getSymbol(borrows[i].alias); - - if (!borrowed) { - LOG.warn("Can't borrow undocumented "+borrows[i].alias+"."); - continue; - } - - if (borrows[i].as == borrowed.alias) { - var assumedName = borrowed.name.split(/([#.-])/).pop(); - borrows[i].as = symbol.name+RegExp.$1+assumedName; - LOG.inform("Assuming borrowed as name is "+borrows[i].as+" but that feature is experimental."); - } - - var borrowAsName = borrows[i].as; - var borrowAsAlias = borrowAsName; - if (!borrowAsName) { - LOG.warn("Malformed @borrow, 'as' is required."); - continue; - } - - if (borrowAsName.length > symbol.alias.length && borrowAsName.indexOf(symbol.alias) == 0) { - borrowAsName = borrowAsName.replace(borrowed.alias, "") - } - else { - var joiner = ""; - if (borrowAsName.charAt(0) != "#") joiner = "."; - borrowAsAlias = borrowed.alias + joiner + borrowAsName; - } - - borrowAsName = borrowAsName.replace(/^[#.]/, ""); - - if (this.hasSymbol(borrowAsAlias)) continue; - - var clone = borrowed.clone(); - clone.name = borrowAsName; - clone.alias = borrowAsAlias; - this.addSymbol(clone); - } - } -} - -JSDOC.SymbolSet.prototype.resolveMemberOf = function() { - for (var p = this._index.first(); p; p = this._index.next()) { - var symbol = p.value; - - if (symbol.is("FILE") || symbol.is("GLOBAL")) continue; - - // the memberOf value was provided in the @memberOf tag - else if (symbol.memberOf) { - // like foo.bar is a memberOf foo - if (symbol.alias.indexOf(symbol.memberOf) == 0) { - var memberMatch = new RegExp("^("+symbol.memberOf+")[.#-]?(.+)$"); - var aliasParts = symbol.alias.match(memberMatch); - - if (aliasParts) { - symbol.memberOf = aliasParts[1]; - symbol.name = aliasParts[2]; - } - - var nameParts = symbol.name.match(memberMatch); - - if (nameParts) { - symbol.name = nameParts[2]; - } - } - // like bar is a memberOf foo - else { - var joiner = symbol.memberOf.charAt(symbol.memberOf.length-1); - if (!/[.#-]/.test(joiner)) symbol.memberOf += "."; - this.renameSymbol(symbol.alias, symbol.memberOf + symbol.name); - } - } - // the memberOf must be calculated - else { - var parts = symbol.alias.match(/^(.*[.#-])([^.#-]+)$/); - - if (parts) { - symbol.memberOf = parts[1]; - symbol.name = parts[2]; - } - } - - // set isStatic, isInner - if (symbol.memberOf) { - switch (symbol.memberOf.charAt(symbol.memberOf.length-1)) { - case '#' : - symbol.isStatic = false; - symbol.isInner = false; - break; - case '.' : - symbol.isStatic = true; - symbol.isInner = false; - break; - case '-' : - symbol.isStatic = false; - symbol.isInner = true; - break; - default: // memberOf ends in none of the above - symbol.isStatic = true; - break; - } - } - - // unowned methods and fields belong to the global object - if (!symbol.is("CONSTRUCTOR") && !symbol.isNamespace && symbol.memberOf == "") { - symbol.memberOf = "_global_"; - } - - // clean up - if (symbol.memberOf.match(/[.#-]$/)) { - symbol.memberOf = symbol.memberOf.substr(0, symbol.memberOf.length-1); - } - // add to parent's methods or properties list - if (symbol.memberOf) { - - var container = this.getSymbol(symbol.memberOf); - if (!container) { - if (JSDOC.Lang.isBuiltin(symbol.memberOf)) container = JSDOC.Parser.addBuiltin(symbol.memberOf); - else { - LOG.warn("Trying to document "+symbol.name +" as a member of undocumented symbol "+symbol.memberOf+"."); - } - } - - if (container) container.addMember(symbol); - } - } -} - -JSDOC.SymbolSet.prototype.resolveAugments = function() { - for (var p = this._index.first(); p; p = this._index.next()) { - var symbol = p.value; - - if (symbol.alias == "_global_" || symbol.is("FILE")) continue; - JSDOC.SymbolSet.prototype.walk.apply(this, [symbol]); - } -} - -JSDOC.SymbolSet.prototype.walk = function(symbol) { - var augments = symbol.augments; - for(var i = 0; i < augments.length; i++) { - var contributer = this.getSymbol(augments[i]); - if (!contributer && JSDOC.Lang.isBuiltin(''+augments[i])) { - contributer = new JSDOC.Symbol("_global_."+augments[i], [], augments[i], new JSDOC.DocComment("Built in.")); - contributer.isNamespace = true; - contributer.srcFile = ""; - contributer.isPrivate = false; - JSDOC.Parser.addSymbol(contributer); - } - - if (contributer) { - if (contributer.augments.length) { - JSDOC.SymbolSet.prototype.walk.apply(this, [contributer]); - } - - symbol.inheritsFrom.push(contributer.alias); - //if (!isUnique(symbol.inheritsFrom)) { - // LOG.warn("Can't resolve augments: Circular reference: "+symbol.alias+" inherits from "+contributer.alias+" more than once."); - //} - //else { - var cmethods = contributer.methods; - var cproperties = contributer.properties; - - for (var ci = 0, cl = cmethods.length; ci < cl; ci++) { - if (!cmethods[ci].isStatic) symbol.inherit(cmethods[ci]); - } - for (var ci = 0, cl = cproperties.length; ci < cl; ci++) { - if (!cproperties[ci].isStatic) symbol.inherit(cproperties[ci]); - } - //} - } - else LOG.warn("Can't augment contributer: "+augments[i]+", not found."); - } -} diff --git a/jsdoc-toolkit/app/lib/JSDOC/TextStream.js b/jsdoc-toolkit/app/lib/JSDOC/TextStream.js deleted file mode 100644 index ccc48a8..0000000 --- a/jsdoc-toolkit/app/lib/JSDOC/TextStream.js +++ /dev/null @@ -1,41 +0,0 @@ - -/** - @constructor -*/ -JSDOC.TextStream = function(text) { - if (typeof(text) == "undefined") text = ""; - text = ""+text; - this.text = text; - this.cursor = 0; -} - -JSDOC.TextStream.prototype.look = function(n) { - if (typeof n == "undefined") n = 0; - - if (this.cursor+n < 0 || this.cursor+n >= this.text.length) { - var result = new String(""); - result.eof = true; - return result; - } - return this.text.charAt(this.cursor+n); -} - -JSDOC.TextStream.prototype.next = function(n) { - if (typeof n == "undefined") n = 1; - if (n < 1) return null; - - var pulled = ""; - for (var i = 0; i < n; i++) { - if (this.cursor+i < this.text.length) { - pulled += this.text.charAt(this.cursor+i); - } - else { - var result = new String(""); - result.eof = true; - return result; - } - } - - this.cursor += n; - return pulled; -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/lib/JSDOC/Token.js b/jsdoc-toolkit/app/lib/JSDOC/Token.js deleted file mode 100644 index fb7f9d9..0000000 --- a/jsdoc-toolkit/app/lib/JSDOC/Token.js +++ /dev/null @@ -1,18 +0,0 @@ -if (typeof JSDOC == "undefined") JSDOC = {}; - -/** - @constructor -*/ -JSDOC.Token = function(data, type, name) { - this.data = data; - this.type = type; - this.name = name; -} - -JSDOC.Token.prototype.toString = function() { - return "<"+this.type+" name=\""+this.name+"\">"+this.data+""; -} - -JSDOC.Token.prototype.is = function(what) { - return this.name === what || this.type === what; -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/lib/JSDOC/TokenReader.js b/jsdoc-toolkit/app/lib/JSDOC/TokenReader.js deleted file mode 100644 index 9f658fb..0000000 --- a/jsdoc-toolkit/app/lib/JSDOC/TokenReader.js +++ /dev/null @@ -1,332 +0,0 @@ -if (typeof JSDOC == "undefined") JSDOC = {}; - -/** - @class Search a {@link JSDOC.TextStream} for language tokens. -*/ -JSDOC.TokenReader = function() { - this.keepDocs = true; - this.keepWhite = false; - this.keepComments = false; -} - -/** - @type {JSDOC.Token[]} - */ -JSDOC.TokenReader.prototype.tokenize = function(/**JSDOC.TextStream*/stream) { - var tokens = []; - /**@ignore*/ tokens.last = function() { return tokens[tokens.length-1]; } - /**@ignore*/ tokens.lastSym = function() { - for (var i = tokens.length-1; i >= 0; i--) { - if (!(tokens[i].is("WHIT") || tokens[i].is("COMM"))) return tokens[i]; - } - } - - while (!stream.look().eof) { - if (this.read_mlcomment(stream, tokens)) continue; - if (this.read_slcomment(stream, tokens)) continue; - if (this.read_dbquote(stream, tokens)) continue; - if (this.read_snquote(stream, tokens)) continue; - if (this.read_regx(stream, tokens)) continue; - if (this.read_numb(stream, tokens)) continue; - if (this.read_punc(stream, tokens)) continue; - if (this.read_newline(stream, tokens)) continue; - if (this.read_space(stream, tokens)) continue; - if (this.read_word(stream, tokens)) continue; - - // if execution reaches here then an error has happened - tokens.push(new JSDOC.Token(stream.next(), "TOKN", "UNKNOWN_TOKEN")); - } - return tokens; -} - -/** - @returns {Boolean} Was the token found? - */ -JSDOC.TokenReader.prototype.read_word = function(/**JSDOC.TokenStream*/stream, tokens) { - var found = ""; - while (!stream.look().eof && JSDOC.Lang.isWordChar(stream.look())) { - found += stream.next(); - } - - if (found === "") { - return false; - } - else { - var name; - if ((name = JSDOC.Lang.keyword(found))) tokens.push(new JSDOC.Token(found, "KEYW", name)); - else tokens.push(new JSDOC.Token(found, "NAME", "NAME")); - return true; - } -} - -/** - @returns {Boolean} Was the token found? - */ -JSDOC.TokenReader.prototype.read_punc = function(/**JSDOC.TokenStream*/stream, tokens) { - var found = ""; - var name; - while (!stream.look().eof && JSDOC.Lang.punc(found+stream.look())) { - found += stream.next(); - } - - if (found === "") { - return false; - } - else { - tokens.push(new JSDOC.Token(found, "PUNC", JSDOC.Lang.punc(found))); - return true; - } -} - -/** - @returns {Boolean} Was the token found? - */ -JSDOC.TokenReader.prototype.read_space = function(/**JSDOC.TokenStream*/stream, tokens) { - var found = ""; - - while (!stream.look().eof && JSDOC.Lang.isSpace(stream.look())) { - found += stream.next(); - } - - if (found === "") { - return false; - } - else { - if (this.collapseWhite) found = " "; - if (this.keepWhite) tokens.push(new JSDOC.Token(found, "WHIT", "SPACE")); - return true; - } -} - -/** - @returns {Boolean} Was the token found? - */ -JSDOC.TokenReader.prototype.read_newline = function(/**JSDOC.TokenStream*/stream, tokens) { - var found = ""; - - while (!stream.look().eof && JSDOC.Lang.isNewline(stream.look())) { - found += stream.next(); - } - - if (found === "") { - return false; - } - else { - if (this.collapseWhite) found = "\n"; - if (this.keepWhite) tokens.push(new JSDOC.Token(found, "WHIT", "NEWLINE")); - return true; - } -} - -/** - @returns {Boolean} Was the token found? - */ -JSDOC.TokenReader.prototype.read_mlcomment = function(/**JSDOC.TokenStream*/stream, tokens) { - if (stream.look() == "/" && stream.look(1) == "*") { - var found = stream.next(2); - - while (!stream.look().eof && !(stream.look(-1) == "/" && stream.look(-2) == "*")) { - found += stream.next(); - } - - // to start doclet we allow /** or /*** but not /**/ or /**** - if (/^\/\*\*([^\/]|\*[^*])/.test(found) && this.keepDocs) tokens.push(new JSDOC.Token(found, "COMM", "JSDOC")); - else if (this.keepComments) tokens.push(new JSDOC.Token(found, "COMM", "MULTI_LINE_COMM")); - return true; - } - return false; -} - -/** - @returns {Boolean} Was the token found? - */ -JSDOC.TokenReader.prototype.read_slcomment = function(/**JSDOC.TokenStream*/stream, tokens) { - var found; - if ( - (stream.look() == "/" && stream.look(1) == "/" && (found=stream.next(2))) - || - (stream.look() == "<" && stream.look(1) == "!" && stream.look(2) == "-" && stream.look(3) == "-" && (found=stream.next(4))) - ) { - - while (!stream.look().eof && !JSDOC.Lang.isNewline(stream.look())) { - found += stream.next(); - } - - if (this.keepComments) { - tokens.push(new JSDOC.Token(found, "COMM", "SINGLE_LINE_COMM")); - } - return true; - } - return false; -} - -/** - @returns {Boolean} Was the token found? - */ -JSDOC.TokenReader.prototype.read_dbquote = function(/**JSDOC.TokenStream*/stream, tokens) { - if (stream.look() == "\"") { - // find terminator - var string = stream.next(); - - while (!stream.look().eof) { - if (stream.look() == "\\") { - if (JSDOC.Lang.isNewline(stream.look(1))) { - do { - stream.next(); - } while (!stream.look().eof && JSDOC.Lang.isNewline(stream.look())); - string += "\\\n"; - } - else { - string += stream.next(2); - } - } - else if (stream.look() == "\"") { - string += stream.next(); - tokens.push(new JSDOC.Token(string, "STRN", "DOUBLE_QUOTE")); - return true; - } - else { - string += stream.next(); - } - } - } - return false; // error! unterminated string -} - -/** - @returns {Boolean} Was the token found? - */ -JSDOC.TokenReader.prototype.read_snquote = function(/**JSDOC.TokenStream*/stream, tokens) { - if (stream.look() == "'") { - // find terminator - var string = stream.next(); - - while (!stream.look().eof) { - if (stream.look() == "\\") { // escape sequence - string += stream.next(2); - } - else if (stream.look() == "'") { - string += stream.next(); - tokens.push(new JSDOC.Token(string, "STRN", "SINGLE_QUOTE")); - return true; - } - else { - string += stream.next(); - } - } - } - return false; // error! unterminated string -} - -/** - @returns {Boolean} Was the token found? - */ -JSDOC.TokenReader.prototype.read_numb = function(/**JSDOC.TokenStream*/stream, tokens) { - if (stream.look() === "0" && stream.look(1) == "x") { - return this.read_hex(stream, tokens); - } - - var found = ""; - - while (!stream.look().eof && JSDOC.Lang.isNumber(found+stream.look())){ - found += stream.next(); - } - - if (found === "") { - return false; - } - else { - if (/^0[0-7]/.test(found)) tokens.push(new JSDOC.Token(found, "NUMB", "OCTAL")); - else tokens.push(new JSDOC.Token(found, "NUMB", "DECIMAL")); - return true; - } -} -/*t: - requires("../lib/JSDOC/TextStream.js"); - requires("../lib/JSDOC/Token.js"); - requires("../lib/JSDOC/Lang.js"); - - plan(3, "testing JSDOC.TokenReader.prototype.read_numb"); - - //// setup - var src = "function foo(num){while (num+8.0 >= 0x20 && num < 0777){}}"; - var tr = new JSDOC.TokenReader(); - var tokens = tr.tokenize(new JSDOC.TextStream(src)); - - var hexToken, octToken, decToken; - for (var i = 0; i < tokens.length; i++) { - if (tokens[i].name == "HEX_DEC") hexToken = tokens[i]; - if (tokens[i].name == "OCTAL") octToken = tokens[i]; - if (tokens[i].name == "DECIMAL") decToken = tokens[i]; - } - //// - - is(decToken.data, "8.0", "decimal number is found in source."); - is(hexToken.data, "0x20", "hexdec number is found in source (issue #99)."); - is(octToken.data, "0777", "octal number is found in source."); -*/ - -/** - @returns {Boolean} Was the token found? - */ -JSDOC.TokenReader.prototype.read_hex = function(/**JSDOC.TokenStream*/stream, tokens) { - var found = stream.next(2); - - while (!stream.look().eof) { - if (JSDOC.Lang.isHexDec(found) && !JSDOC.Lang.isHexDec(found+stream.look())) { // done - tokens.push(new JSDOC.Token(found, "NUMB", "HEX_DEC")); - return true; - } - else { - found += stream.next(); - } - } - return false; -} - -/** - @returns {Boolean} Was the token found? - */ -JSDOC.TokenReader.prototype.read_regx = function(/**JSDOC.TokenStream*/stream, tokens) { - var last; - if ( - stream.look() == "/" - && - ( - - ( - !(last = tokens.lastSym()) // there is no last, the regex is the first symbol - || - ( - !last.is("NUMB") - && !last.is("NAME") - && !last.is("RIGHT_PAREN") - && !last.is("RIGHT_BRACKET") - ) - ) - ) - ) { - var regex = stream.next(); - - while (!stream.look().eof) { - if (stream.look() == "\\") { // escape sequence - regex += stream.next(2); - } - else if (stream.look() == "/") { - regex += stream.next(); - - while (/[gmi]/.test(stream.look())) { - regex += stream.next(); - } - - tokens.push(new JSDOC.Token(regex, "REGX", "REGX")); - return true; - } - else { - regex += stream.next(); - } - } - // error: unterminated regex - } - return false; -} diff --git a/jsdoc-toolkit/app/lib/JSDOC/TokenStream.js b/jsdoc-toolkit/app/lib/JSDOC/TokenStream.js deleted file mode 100644 index 1eeb44c..0000000 --- a/jsdoc-toolkit/app/lib/JSDOC/TokenStream.js +++ /dev/null @@ -1,133 +0,0 @@ -if (typeof JSDOC == "undefined") JSDOC = {}; - -/** - @constructor -*/ -JSDOC.TokenStream = function(tokens) { - this.tokens = (tokens || []); - this.rewind(); -} - -/** - @constructor - @private -*/ -function VoidToken(/**String*/type) { - this.toString = function() {return ""}; - this.is = function(){return false;} -} - -JSDOC.TokenStream.prototype.rewind = function() { - this.cursor = -1; -} - -/** - @type JSDOC.Token -*/ -JSDOC.TokenStream.prototype.look = function(/**Number*/n, /**Boolean*/considerWhitespace) { - if (typeof n == "undefined") n = 0; - - if (considerWhitespace == true) { - if (this.cursor+n < 0 || this.cursor+n > this.tokens.length) return {}; - return this.tokens[this.cursor+n]; - } - else { - var count = 0; - var i = this.cursor; - - while (true) { - if (i < 0) return new JSDOC.Token("", "VOID", "START_OF_STREAM"); - else if (i > this.tokens.length) return new JSDOC.Token("", "VOID", "END_OF_STREAM"); - - if (i != this.cursor && (this.tokens[i] === undefined || this.tokens[i].is("WHIT"))) { - if (n < 0) i--; else i++; - continue; - } - - if (count == Math.abs(n)) { - return this.tokens[i]; - } - count++; - (n < 0)? i-- : i++; - } - - return new JSDOC.Token("", "VOID", "STREAM_ERROR"); // because null isn't an object and caller always expects an object - } -} - -/** - @type JSDOC.Token|JSDOC.Token[] -*/ -JSDOC.TokenStream.prototype.next = function(/**Number*/howMany) { - if (typeof howMany == "undefined") howMany = 1; - if (howMany < 1) return null; - var got = []; - - for (var i = 1; i <= howMany; i++) { - if (this.cursor+i >= this.tokens.length) { - return null; - } - got.push(this.tokens[this.cursor+i]); - } - this.cursor += howMany; - - if (howMany == 1) { - return got[0]; - } - else return got; -} - -/** - @type JSDOC.Token[] -*/ -JSDOC.TokenStream.prototype.balance = function(/**String*/start, /**String*/stop) { - if (!stop) stop = JSDOC.Lang.matching(start); - - var depth = 0; - var got = []; - var started = false; - - while ((token = this.look())) { - if (token.is(start)) { - depth++; - started = true; - } - - if (started) { - got.push(token); - } - - if (token.is(stop)) { - depth--; - if (depth == 0) return got; - } - if (!this.next()) break; - } -} - -JSDOC.TokenStream.prototype.getMatchingToken = function(/**String*/start, /**String*/stop) { - var depth = 0; - var cursor = this.cursor; - - if (!start) { - start = JSDOC.Lang.matching(stop); - depth = 1; - } - if (!stop) stop = JSDOC.Lang.matching(start); - - while ((token = this.tokens[cursor])) { - if (token.is(start)) { - depth++; - } - - if (token.is(stop) && cursor) { - depth--; - if (depth == 0) return this.tokens[cursor]; - } - cursor++; - } -} - -JSDOC.TokenStream.prototype.insertAhead = function(/**JSDOC.Token*/token) { - this.tokens.splice(this.cursor+1, 0, token); -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/lib/JSDOC/Util.js b/jsdoc-toolkit/app/lib/JSDOC/Util.js deleted file mode 100644 index 6d7edb3..0000000 --- a/jsdoc-toolkit/app/lib/JSDOC/Util.js +++ /dev/null @@ -1,32 +0,0 @@ -/** - * @namespace - * @deprecated Use {@link FilePath} instead. - */ -JSDOC.Util = { -} - -/** - * @deprecated Use {@link FilePath.fileName} instead. - */ -JSDOC.Util.fileName = function(path) { - LOG.warn("JSDOC.Util.fileName is deprecated. Use FilePath.fileName instead."); - var nameStart = Math.max(path.lastIndexOf("/")+1, path.lastIndexOf("\\")+1, 0); - return path.substring(nameStart); -} - -/** - * @deprecated Use {@link FilePath.fileExtension} instead. - */ -JSDOC.Util.fileExtension = function(filename) { - LOG.warn("JSDOC.Util.fileExtension is deprecated. Use FilePath.fileExtension instead."); - return filename.split(".").pop().toLowerCase(); -}; - -/** - * @deprecated Use {@link FilePath.dir} instead. - */ -JSDOC.Util.dir = function(path) { - LOG.warn("JSDOC.Util.dir is deprecated. Use FilePath.dir instead."); - var nameStart = Math.max(path.lastIndexOf("/")+1, path.lastIndexOf("\\")+1, 0); - return path.substring(0, nameStart-1); -} diff --git a/jsdoc-toolkit/app/lib/JSDOC/Walker.js b/jsdoc-toolkit/app/lib/JSDOC/Walker.js deleted file mode 100644 index 6ecaea8..0000000 --- a/jsdoc-toolkit/app/lib/JSDOC/Walker.js +++ /dev/null @@ -1,507 +0,0 @@ -if (typeof JSDOC == "undefined") JSDOC = {}; - -/** @constructor */ -JSDOC.Walker = function(/**JSDOC.TokenStream*/ts) { - this.init(); - if (typeof ts != "undefined") { - this.walk(ts); - } -} - -JSDOC.Walker.prototype.init = function() { - this.ts = null; - - var globalSymbol = new JSDOC.Symbol("_global_", [], "GLOBAL", new JSDOC.DocComment("")); - globalSymbol.isNamespace = true; - globalSymbol.srcFile = ""; - globalSymbol.isPrivate = false; - JSDOC.Parser.addSymbol(globalSymbol); - this.lastDoc = null; - this.token = null; - - /** - The chain of symbols under which we are currently nested. - @type Array - */ - this.namescope = [globalSymbol]; - this.namescope.last = function(n){ if (!n) n = 0; return this[this.length-(1+n)] || "" }; -} - -JSDOC.Walker.prototype.walk = function(/**JSDOC.TokenStream*/ts) { - this.ts = ts; - while (this.token = this.ts.look()) { - if (this.token.popNamescope) { - - var symbol = this.namescope.pop(); - if (symbol.is("FUNCTION")) { - if (this.ts.look(1).is("LEFT_PAREN") && symbol.comment.getTag("function").length == 0) { - symbol.isa = "OBJECT"; - } - } - } - this.step(); - if (!this.ts.next()) break; - } -} - -JSDOC.Walker.prototype.step = function() { - if (this.token.is("JSDOC")) { // it's a doc comment - - var doc = new JSDOC.DocComment(this.token.data); - - - if (doc.getTag("exports").length > 0) { - var exports = doc.getTag("exports")[0]; - - exports.desc.match(/(\S+) as (\S+)/i); - var n1 = RegExp.$1; - var n2 = RegExp.$2; - - if (!n1 && n2) throw "@exports tag requires a value like: 'name as ns.name'"; - - JSDOC.Parser.rename = (JSDOC.Parser.rename || {}); - JSDOC.Parser.rename[n1] = n2 - } - - if (doc.getTag("lends").length > 0) { - var lends = doc.getTag("lends")[0]; - - var name = lends.desc - if (!name) throw "@lends tag requires a value."; - - var symbol = new JSDOC.Symbol(name, [], "OBJECT", doc); - - this.namescope.push(symbol); - - var matching = this.ts.getMatchingToken("LEFT_CURLY"); - if (matching) matching.popNamescope = name; - else LOG.warn("Mismatched } character. Can't parse code in file " + symbol.srcFile + "."); - - this.lastDoc = null; - return true; - } - else if (doc.getTag("name").length > 0 && doc.getTag("overview").length == 0) { // it's a virtual symbol - var virtualName = doc.getTag("name")[0].desc; - if (!virtualName) throw "@name tag requires a value."; - - if (doc.getTag("memberOf").length > 0) { - virtualName = (doc.getTag("memberOf")[0] + "." + virtualName) - .replace(/([#.])\./, "$1"); - doc.deleteTag("memberOf"); - } - - var symbol = new JSDOC.Symbol(virtualName, [], "VIRTUAL", doc); - - JSDOC.Parser.addSymbol(symbol); - - this.lastDoc = null; - return true; - } - else if (doc.meta) { // it's a meta doclet - if (doc.meta == "@+") JSDOC.DocComment.shared = doc.src; - else if (doc.meta == "@-") JSDOC.DocComment.shared = ""; - else if (doc.meta == "nocode+") JSDOC.Parser.conf.ignoreCode = true; - else if (doc.meta == "nocode-") JSDOC.Parser.conf.ignoreCode = JSDOC.opt.n; - else throw "Unrecognized meta comment: "+doc.meta; - - this.lastDoc = null; - return true; - } - else if (doc.getTag("overview").length > 0) { // it's a file overview - symbol = new JSDOC.Symbol("", [], "FILE", doc); - - JSDOC.Parser.addSymbol(symbol); - - this.lastDoc = null; - return true; - } - else { - this.lastDoc = doc; - return false; - } - } - else if (!JSDOC.Parser.conf.ignoreCode) { // it's code - if (this.token.is("NAME")) { // it's the name of something - var symbol; - var name = this.token.data; - var doc = null; if (this.lastDoc) doc = this.lastDoc; - var params = []; - - // it's inside an anonymous object - if (this.ts.look(1).is("COLON") && this.ts.look(-1).is("LEFT_CURLY") && !(this.ts.look(-2).is("JSDOC") || this.namescope.last().comment.getTag("lends").length || this.ts.look(-2).is("ASSIGN") || this.ts.look(-2).is("COLON"))) { - name = "$anonymous"; - name = this.namescope.last().alias+"-"+name - - params = []; - - symbol = new JSDOC.Symbol(name, params, "OBJECT", doc); - - JSDOC.Parser.addSymbol(symbol); - - this.namescope.push(symbol); - - var matching = this.ts.getMatchingToken(null, "RIGHT_CURLY"); - if (matching) matching.popNamescope = name; - else LOG.warn("Mismatched } character. Can't parse code in file " + symbol.srcFile + "."); - } - // function foo() {} - else if (this.ts.look(-1).is("FUNCTION") && this.ts.look(1).is("LEFT_PAREN")) { - var isInner; - - if (this.lastDoc) doc = this.lastDoc; - - if (doc && doc.getTag("memberOf").length > 0) { - name = (doc.getTag("memberOf")[0]+"."+name).replace("#.", "#"); - doc.deleteTag("memberOf"); - } - else { - name = this.namescope.last().alias+"-"+name; - if (!this.namescope.last().is("GLOBAL")) isInner = true; - } - - if (!this.namescope.last().is("GLOBAL")) isInner = true; - - params = JSDOC.Walker.onParamList(this.ts.balance("LEFT_PAREN")); - - symbol = new JSDOC.Symbol(name, params, "FUNCTION", doc); - if (isInner) symbol.isInner = true; - - if (this.ts.look(1).is("JSDOC")) { - var inlineReturn = ""+this.ts.look(1).data; - inlineReturn = inlineReturn.replace(/(^\/\*\* *| *\*\/$)/g, ""); - symbol.type = inlineReturn; - } - - JSDOC.Parser.addSymbol(symbol); - - this.namescope.push(symbol); - - var matching = this.ts.getMatchingToken("LEFT_CURLY"); - if (matching) matching.popNamescope = name; - else LOG.warn("Mismatched } character. Can't parse code in file " + symbol.srcFile + "."); - } - // foo = function() {} - else if (this.ts.look(1).is("ASSIGN") && this.ts.look(2).is("FUNCTION")) { - var constructs; - var isConstructor = false; - if (doc && (constructs = doc.getTag("constructs")) && constructs.length) { - if (constructs[0].desc) { - name = constructs[0].desc; - isConstructor = true; - } - } - - var isInner; - if (this.ts.look(-1).is("VAR") || this.isInner) { - if (doc && doc.getTag("memberOf").length > 0) { - name = (doc.getTag("memberOf")[0]+"."+name).replace("#.", "#"); - doc.deleteTag("memberOf"); - } - else { - name = this.namescope.last().alias+"-"+name; - if (!this.namescope.last().is("GLOBAL")) isInner = true; - } - if (!this.namescope.last().is("GLOBAL")) isInner = true; - } - else if (name.indexOf("this.") == 0) { - name = this.resolveThis(name); - } - - if (this.lastDoc) doc = this.lastDoc; - params = JSDOC.Walker.onParamList(this.ts.balance("LEFT_PAREN")); - - symbol = new JSDOC.Symbol(name, params, "FUNCTION", doc); - - if (isInner) symbol.isInner = true; - if (isConstructor) symbol.isa = "CONSTRUCTOR"; - - if (this.ts.look(1).is("JSDOC")) { - var inlineReturn = ""+this.ts.look(1).data; - inlineReturn = inlineReturn.replace(/(^\/\*\* *| *\*\/$)/g, ""); - symbol.type = inlineReturn; - } - - JSDOC.Parser.addSymbol(symbol); - - this.namescope.push(symbol); - - var matching = this.ts.getMatchingToken("LEFT_CURLY"); - if (matching) matching.popNamescope = name; - else LOG.warn("Mismatched } character. Can't parse code in file " + symbol.srcFile + "."); - } - // foo = new function() {} or foo = (function() {} - else if (this.ts.look(1).is("ASSIGN") && (this.ts.look(2).is("NEW") || this.ts.look(2).is("LEFT_PAREN")) && this.ts.look(3).is("FUNCTION")) { - var isInner; - if (this.ts.look(-1).is("VAR") || this.isInner) { - name = this.namescope.last().alias+"-"+name - if (!this.namescope.last().is("GLOBAL")) isInner = true; - } - else if (name.indexOf("this.") == 0) { - name = this.resolveThis(name); - } - - this.ts.next(3); // advance past the "new" or "(" - - if (this.lastDoc) doc = this.lastDoc; - params = JSDOC.Walker.onParamList(this.ts.balance("LEFT_PAREN")); - - symbol = new JSDOC.Symbol(name, params, "OBJECT", doc); - if (isInner) symbol.isInner = true; - - if (this.ts.look(1).is("JSDOC")) { - var inlineReturn = ""+this.ts.look(1).data; - inlineReturn = inlineReturn.replace(/(^\/\*\* *| *\*\/$)/g, ""); - symbol.type = inlineReturn; - } - - JSDOC.Parser.addSymbol(symbol); - - symbol.scopeType = "INSTANCE"; - this.namescope.push(symbol); - - var matching = this.ts.getMatchingToken("LEFT_CURLY"); - if (matching) matching.popNamescope = name; - else LOG.warn("Mismatched } character. Can't parse code in file " + symbol.srcFile + "."); - } - // foo: function() {} - else if (this.ts.look(1).is("COLON") && this.ts.look(2).is("FUNCTION")) { - name = (this.namescope.last().alias+"."+name).replace("#.", "#"); - - if (this.lastDoc) doc = this.lastDoc; - params = JSDOC.Walker.onParamList(this.ts.balance("LEFT_PAREN")); - - if (doc && doc.getTag("constructs").length) { - name = name.replace(/\.prototype(\.|$)/, "#"); - - if (name.indexOf("#") > -1) name = name.match(/(^[^#]+)/)[0]; - else name = this.namescope.last().alias; - - symbol = new JSDOC.Symbol(name, params, "CONSTRUCTOR", doc); - } - else { - symbol = new JSDOC.Symbol(name, params, "FUNCTION", doc); - } - - if (this.ts.look(1).is("JSDOC")) { - var inlineReturn = ""+this.ts.look(1).data; - inlineReturn = inlineReturn.replace(/(^\/\*\* *| *\*\/$)/g, ""); - symbol.type = inlineReturn; - } - - JSDOC.Parser.addSymbol(symbol); - - this.namescope.push(symbol); - - var matching = this.ts.getMatchingToken("LEFT_CURLY"); - if (matching) matching.popNamescope = name; - else LOG.warn("Mismatched } character. Can't parse code in file " + symbol.srcFile + "."); - } - // foo = {} - else if (this.ts.look(1).is("ASSIGN") && this.ts.look(2).is("LEFT_CURLY")) { - var isInner; - if (this.ts.look(-1).is("VAR") || this.isInner) { - name = this.namescope.last().alias+"-"+name - if (!this.namescope.last().is("GLOBAL")) isInner = true; - } - else if (name.indexOf("this.") == 0) { - name = this.resolveThis(name); - } - - if (this.lastDoc) doc = this.lastDoc; - - symbol = new JSDOC.Symbol(name, params, "OBJECT", doc); - if (isInner) symbol.isInner = true; - - - if (doc) JSDOC.Parser.addSymbol(symbol); - - this.namescope.push(symbol); - - var matching = this.ts.getMatchingToken("LEFT_CURLY"); - if (matching) matching.popNamescope = name; - else LOG.warn("Mismatched } character. Can't parse code in file " + symbol.srcFile + "."); - } - // var foo; - else if (this.ts.look(1).is("SEMICOLON")) { - var isInner; - - if (this.ts.look(-1).is("VAR") || this.isInner) { - name = this.namescope.last().alias+"-"+name - if (!this.namescope.last().is("GLOBAL")) isInner = true; - - if (this.lastDoc) doc = this.lastDoc; - - symbol = new JSDOC.Symbol(name, params, "OBJECT", doc); - if (isInner) symbol.isInner = true; - - - if (doc) JSDOC.Parser.addSymbol(symbol); - } - } - // foo = x - else if (this.ts.look(1).is("ASSIGN")) { - var isInner; - if (this.ts.look(-1).is("VAR") || this.isInner) { - name = this.namescope.last().alias+"-"+name - if (!this.namescope.last().is("GLOBAL")) isInner = true; - } - else if (name.indexOf("this.") == 0) { - name = this.resolveThis(name); - } - - if (this.lastDoc) doc = this.lastDoc; - - symbol = new JSDOC.Symbol(name, params, "OBJECT", doc); - if (isInner) symbol.isInner = true; - - - if (doc) JSDOC.Parser.addSymbol(symbol); - } - // foo: {} - else if (this.ts.look(1).is("COLON") && this.ts.look(2).is("LEFT_CURLY")) { - name = (this.namescope.last().alias+"."+name).replace("#.", "#"); - - if (this.lastDoc) doc = this.lastDoc; - - symbol = new JSDOC.Symbol(name, params, "OBJECT", doc); - - - if (doc) JSDOC.Parser.addSymbol(symbol); - - this.namescope.push(symbol); - - var matching = this.ts.getMatchingToken("LEFT_CURLY"); - if (matching) matching.popNamescope = name; - else LOG.warn("Mismatched } character. Can't parse code in file " + symbol.srcFile + "."); - } - // foo: x - else if (this.ts.look(1).is("COLON")) { - name = (this.namescope.last().alias+"."+name).replace("#.", "#");; - - if (this.lastDoc) doc = this.lastDoc; - - symbol = new JSDOC.Symbol(name, params, "OBJECT", doc); - - - if (doc) JSDOC.Parser.addSymbol(symbol); - } - // foo(...) - else if (this.ts.look(1).is("LEFT_PAREN")) { - if (typeof JSDOC.PluginManager != "undefined") { - var functionCall = {name: name}; - - var cursor = this.ts.cursor; - params = JSDOC.Walker.onParamList(this.ts.balance("LEFT_PAREN")); - this.ts.cursor = cursor; - - for (var i = 0; i < params.length; i++) - functionCall["arg" + (i + 1)] = params[i].name; - - JSDOC.PluginManager.run("onFunctionCall", functionCall); - if (functionCall.doc) { - this.ts.insertAhead(new JSDOC.Token(functionCall.doc, "COMM", "JSDOC")); - } - } - } - this.lastDoc = null; - } - else if (this.token.is("FUNCTION")) { // it's an anonymous function - if ( - (!this.ts.look(-1).is("COLON") || !this.ts.look(-1).is("ASSIGN")) - && !this.ts.look(1).is("NAME") - ) { - if (this.lastDoc) doc = this.lastDoc; - - name = "$anonymous"; - name = this.namescope.last().alias+"-"+name - - params = JSDOC.Walker.onParamList(this.ts.balance("LEFT_PAREN")); - - symbol = new JSDOC.Symbol(name, params, "FUNCTION", doc); - - JSDOC.Parser.addSymbol(symbol); - - this.namescope.push(symbol); - - var matching = this.ts.getMatchingToken("LEFT_CURLY"); - if (matching) matching.popNamescope = name; - else LOG.warn("Mismatched } character. Can't parse code in file " + symbol.srcFile + "."); - } - } - } - return true; -} - -/** - Resolves what "this." means when it appears in a name. - @param name The name that starts with "this.". - @returns The name with "this." resolved. - */ -JSDOC.Walker.prototype.resolveThis = function(name) { - name.match(/^this\.(.+)$/) - var nameFragment = RegExp.$1; - if (!nameFragment) return name; - - var symbol = this.namescope.last(); - var scopeType = symbol.scopeType || symbol.isa; - - // if we are in a constructor function, `this` means the instance - if (scopeType == "CONSTRUCTOR") { - name = symbol.alias+"#"+nameFragment; - } - - // if we are in an anonymous constructor function, `this` means the instance - else if (scopeType == "INSTANCE") { - name = symbol.alias+"."+nameFragment; - } - - // if we are in a function, `this` means the container (possibly the global) - else if (scopeType == "FUNCTION") { - // in a method of a prototype, so `this` means the constructor - if (symbol.alias.match(/(^.*)[#.-][^#.-]+/)) { - var parentName = RegExp.$1; - var parent = JSDOC.Parser.symbols.getSymbol(parentName); - - if (!parent) { - if (JSDOC.Lang.isBuiltin(parentName)) parent = JSDOC.Parser.addBuiltin(parentName); - else { - if (symbol.alias.indexOf("$anonymous") < 0) // these will be ignored eventually - LOG.warn("Trying to document "+symbol.alias+" without first documenting "+parentName+"."); - } - } - if (parent) name = parentName+(parent.is("CONSTRUCTOR")?"#":".")+nameFragment; - } - else { - parent = this.namescope.last(1); - name = parent.alias+(parent.is("CONSTRUCTOR")?"#":".")+nameFragment; - } - } - // otherwise it means the global - else { - name = nameFragment; - } - - return name; -} - -JSDOC.Walker.onParamList = function(/**Array*/paramTokens) { - if (!paramTokens) { - LOG.warn("Malformed parameter list. Can't parse code."); - return []; - } - var params = []; - for (var i = 0, l = paramTokens.length; i < l; i++) { - if (paramTokens[i].is("JSDOC")) { - var paramType = paramTokens[i].data.replace(/(^\/\*\* *| *\*\/$)/g, ""); - - if (paramTokens[i+1] && paramTokens[i+1].is("NAME")) { - i++; - params.push({type: paramType, name: paramTokens[i].data}); - } - } - else if (paramTokens[i].is("NAME")) { - params.push({name: paramTokens[i].data}); - } - } - return params; -} diff --git a/jsdoc-toolkit/app/main.js b/jsdoc-toolkit/app/main.js deleted file mode 100644 index f9008c8..0000000 --- a/jsdoc-toolkit/app/main.js +++ /dev/null @@ -1,111 +0,0 @@ -/** - * @version $Id: main.js 818 2009-11-08 14:51:41Z micmath $ - */ - -function main() { - IO.include("lib/JSDOC.js"); - IO.includeDir("plugins/"); - - // process the options - - // the -c option: options are defined in a configuration file - if (JSDOC.opt.c) { - eval("JSDOC.conf = " + IO.readFile(JSDOC.opt.c)); - - LOG.inform("Using configuration file at '"+JSDOC.opt.c+"'."); - - for (var c in JSDOC.conf) { - if (c !== "D" && !defined(JSDOC.opt[c])) { // commandline overrules config file - JSDOC.opt[c] = JSDOC.conf[c]; - } - } - - if (typeof JSDOC.conf["_"] != "undefined") { - JSDOC.opt["_"] = JSDOC.opt["_"].concat(JSDOC.conf["_"]); - } - - LOG.inform("With configuration: "); - for (var o in JSDOC.opt) { - LOG.inform(" "+o+": "+JSDOC.opt[o]); - } - } - - // be verbose - if (JSDOC.opt.v) LOG.verbose = true; - - // send log messages to a file - if (JSDOC.opt.o) LOG.out = IO.open(JSDOC.opt.o); - - // run the unit tests - if (JSDOC.opt.T) { - LOG.inform("JsDoc Toolkit running in test mode at "+new Date()+"."); - IO.include("frame/Testrun.js"); - IO.include("test.js"); - } - else { - // a template must be defined and must be a directory path - if (!JSDOC.opt.t && System.getProperty("jsdoc.template.dir")) { - JSDOC.opt.t = System.getProperty("jsdoc.template.dir"); - } - if (JSDOC.opt.t && SYS.slash != JSDOC.opt.t.slice(-1)) { - JSDOC.opt.t += SYS.slash; - } - - // verbose messages about the options we were given - LOG.inform("JsDoc Toolkit main() running at "+new Date()+"."); - LOG.inform("With options: "); - for (var o in JSDOC.opt) { - LOG.inform(" "+o+": "+JSDOC.opt[o]); - } - - // initialize and build a symbolSet from your code - JSDOC.JsDoc(); - - // debugger's option: dump the entire symbolSet produced from your code - if (JSDOC.opt.Z) { - LOG.warn("So you want to see the data structure, eh? This might hang if you have circular refs..."); - IO.include("frame/Dumper.js"); - var symbols = JSDOC.JsDoc.symbolSet.toArray(); - for (var i = 0, l = symbols.length; i < l; i++) { - var symbol = symbols[i]; - print("// symbol: " + symbol.alias); - print(symbol.serialize()); - } - } - else { - if (typeof JSDOC.opt.t != "undefined") { - try { - // a file named "publish.js" must exist in the template directory - load(JSDOC.opt.t+"publish.js"); - - // and must define a function named "publish" - if (!publish) { - LOG.warn("No publish() function is defined in that template so nothing to do."); - } - else { - // which will be called with the symbolSet produced from your code - publish(JSDOC.JsDoc.symbolSet); - } - } - catch(e) { - LOG.warn("Sorry, that doesn't seem to be a valid template: "+JSDOC.opt.t+"publish.js : "+e); - } - } - else { - LOG.warn("No template given. Might as well read the usage notes."); - JSDOC.usage(); - } - } - } - - // notify of any warnings - if (!JSDOC.opt.q && LOG.warnings.length) { - print(LOG.warnings.length+" warning"+(LOG.warnings.length != 1? "s":"")+"."); - } - - // stop sending log messages to a file - if (LOG.out) { - LOG.out.flush(); - LOG.out.close(); - } -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/plugins/commentSrcJson.js b/jsdoc-toolkit/app/plugins/commentSrcJson.js deleted file mode 100644 index e826b57..0000000 --- a/jsdoc-toolkit/app/plugins/commentSrcJson.js +++ /dev/null @@ -1,20 +0,0 @@ -JSDOC.PluginManager.registerPlugin( - "JSDOC.commentSrcJson", - { - onDocCommentSrc: function(comment) { - var json; - if (/^\s*@json\b/.test(comment)) { - comment.src = new String(comment.src).replace("@json", ""); - - eval("json = "+comment.src); - var tagged = ""; - for (var i in json) { - var tag = json[i]; - // todo handle cases where tag is an object - tagged += "@"+i+" "+tag+"\n"; - } - comment.src = tagged; - } - } - } -); \ No newline at end of file diff --git a/jsdoc-toolkit/app/plugins/frameworkPrototype.js b/jsdoc-toolkit/app/plugins/frameworkPrototype.js deleted file mode 100644 index 9c41751..0000000 --- a/jsdoc-toolkit/app/plugins/frameworkPrototype.js +++ /dev/null @@ -1,16 +0,0 @@ -JSDOC.PluginManager.registerPlugin( - "JSDOC.frameworkPrototype", - { - onPrototypeClassCreate: function(classCreator) { - var desc = ""; - if (classCreator.comment) { - desc = classCreator.comment; - } - var insert = desc+"/** @name "+classCreator.name+"\n@constructor\n@scope "+classCreator.name+".prototype */" - - insert = insert.replace(/\*\/\/\*\*/g, "\n"); - /*DEBUG*///print("insert is "+insert); - classCreator.addComment.data = insert; - } - } -); diff --git a/jsdoc-toolkit/app/plugins/functionCall.js b/jsdoc-toolkit/app/plugins/functionCall.js deleted file mode 100644 index 6f87705..0000000 --- a/jsdoc-toolkit/app/plugins/functionCall.js +++ /dev/null @@ -1,10 +0,0 @@ -JSDOC.PluginManager.registerPlugin( - "JSDOC.functionCall", - { - onFunctionCall: function(functionCall) { - if (functionCall.name == "dojo.define" && functionCall.arg1) { - functionCall.doc = "/** @lends "+eval(functionCall.arg1)+".prototype */"; - } - } - } -); \ No newline at end of file diff --git a/jsdoc-toolkit/app/plugins/publishSrcHilite.js b/jsdoc-toolkit/app/plugins/publishSrcHilite.js deleted file mode 100644 index 65514f2..0000000 --- a/jsdoc-toolkit/app/plugins/publishSrcHilite.js +++ /dev/null @@ -1,62 +0,0 @@ -JSDOC.PluginManager.registerPlugin( - "JSDOC.publishSrcHilite", - { - onPublishSrc: function(src) { - if (src.path in JsHilite.cache) { - return; // already generated src code - } - else JsHilite.cache[src.path] = true; - - try { - var sourceCode = IO.readFile(src.path); - } - catch(e) { - print(e.message); - quit(); - } - - var hiliter = new JsHilite(sourceCode, src.charset); - src.hilited = hiliter.hilite(); - } - } -); - -function JsHilite(src, charset) { - - var tr = new JSDOC.TokenReader(); - - tr.keepComments = true; - tr.keepDocs = true; - tr.keepWhite = true; - - this.tokens = tr.tokenize(new JSDOC.TextStream(src)); - - // TODO is redefining toString() the best way? - JSDOC.Token.prototype.toString = function() { - return ""+this.data.replace(/"; - } - - if (!charset) charset = "utf-8"; - - this.header = ' '+ - "

    ";
    -	this.footer = "
    "; - this.showLinenumbers = true; -} - -JsHilite.cache = {}; - -JsHilite.prototype.hilite = function() { - var hilited = this.tokens.join(""); - var line = 1; - if (this.showLinenumbers) hilited = hilited.replace(/(^|\n)/g, function(m){return m+""+((line<10)? " ":"")+((line<100)? " ":"")+(line++)+" "}); - - return this.header+hilited+this.footer; -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/plugins/symbolLink.js b/jsdoc-toolkit/app/plugins/symbolLink.js deleted file mode 100644 index c87f1ca..0000000 --- a/jsdoc-toolkit/app/plugins/symbolLink.js +++ /dev/null @@ -1,10 +0,0 @@ -JSDOC.PluginManager.registerPlugin( - "JSDOC.symbolLink", - { - onSymbolLink: function(link) { - // modify link.linkPath (the href part of the link) - // or link.linkText (the text displayed) - // or link.linkInner (the #name part of the link) - } - } -); \ No newline at end of file diff --git a/jsdoc-toolkit/app/plugins/tagParamConfig.js b/jsdoc-toolkit/app/plugins/tagParamConfig.js deleted file mode 100644 index 3ea8a1b..0000000 --- a/jsdoc-toolkit/app/plugins/tagParamConfig.js +++ /dev/null @@ -1,31 +0,0 @@ -JSDOC.PluginManager.registerPlugin( - "JSDOC.tagParamConfig", - { - onDocCommentTags: function(comment) { - var currentParam = null; - var tags = comment.tags; - for (var i = 0, l = tags.length; i < l; i++) { - - if (tags[i].title == "param") { - if (tags[i].name.indexOf(".") == -1) { - currentParam = i; - } - } - else if (tags[i].title == "config") { - tags[i].title = "param"; - if (currentParam == null) { - tags[i].name = "arguments"+"."+tags[i].name; - } - else if (tags[i].name.indexOf(tags[currentParam].name+".") != 0) { - tags[i].name = tags[currentParam].name+"."+tags[i].name; - } - currentParam != null - //tags[currentParam].properties.push(tags[i]); - } - else { - currentParam = null; - } - } - } - } -); diff --git a/jsdoc-toolkit/app/plugins/tagSynonyms.js b/jsdoc-toolkit/app/plugins/tagSynonyms.js deleted file mode 100644 index 49a874f..0000000 --- a/jsdoc-toolkit/app/plugins/tagSynonyms.js +++ /dev/null @@ -1,43 +0,0 @@ -JSDOC.PluginManager.registerPlugin( - "JSDOC.tagSynonyms", - { - onDocCommentSrc: function(comment) { - comment.src = comment.src.replace(/@methodOf\b/i, "@function\n@memberOf"); - comment.src = comment.src.replace(/@fieldOf\b/i, "@field\n@memberOf"); - }, - - onDocCommentTags: function(comment) { - for (var i = 0, l = comment.tags.length; i < l; i++) { - var title = comment.tags[i].title.toLowerCase(); - var syn; - if ((syn = JSDOC.tagSynonyms.synonyms["="+title])) { - comment.tags[i].title = syn; - } - } - } - } -); - -new Namespace( - "JSDOC.tagSynonyms", - function() { - JSDOC.tagSynonyms.synonyms = { - "=member": "memberOf", - "=memberof": "memberOf", - "=description": "desc", - "=exception": "throws", - "=argument": "param", - "=returns": "return", - "=classdescription": "class", - "=fileoverview": "overview", - "=extends": "augments", - "=base": "augments", - "=projectdescription": "overview", - "=classdescription": "class", - "=link": "see", - "=borrows": "inherits", - "=scope": "lends", - "=construct": "constructor" - } - } -); \ No newline at end of file diff --git a/jsdoc-toolkit/app/run.js b/jsdoc-toolkit/app/run.js deleted file mode 100644 index 1f875cd..0000000 --- a/jsdoc-toolkit/app/run.js +++ /dev/null @@ -1,348 +0,0 @@ -/** - * @fileOverview - * A bootstrap script that creates some basic required objects - * for loading other scripts. - * @author Michael Mathews, micmath@gmail.com - * @version $Id: run.js 756 2009-01-07 21:32:58Z micmath $ - */ - -/** - * @namespace Keep track of any messages from the running script. - */ -LOG = { - warn: function(msg, e) { - if (JSDOC.opt.q) return; - if (e) msg = e.fileName+", line "+e.lineNumber+": "+msg; - - msg = ">> WARNING: "+msg; - LOG.warnings.push(msg); - if (LOG.out) LOG.out.write(msg+"\n"); - else print(msg); - }, - - inform: function(msg) { - if (JSDOC.opt.q) return; - msg = " > "+msg; - if (LOG.out) LOG.out.write(msg+"\n"); - else if (typeof LOG.verbose != "undefined" && LOG.verbose) print(msg); - } -}; -LOG.warnings = []; -LOG.verbose = false -LOG.out = undefined; - -/** - * @class Manipulate a filepath. - */ -function FilePath(absPath, separator) { - this.slash = separator || "/"; - this.root = this.slash; - this.path = []; - this.file = ""; - - var parts = absPath.split(/[\\\/]/); - if (parts) { - if (parts.length) this.root = parts.shift() + this.slash; - if (parts.length) this.file = parts.pop() - if (parts.length) this.path = parts; - } - - this.path = this.resolvePath(); -} - -/** Collapse any dot-dot or dot items in a filepath. */ -FilePath.prototype.resolvePath = function() { - var resolvedPath = []; - for (var i = 0; i < this.path.length; i++) { - if (this.path[i] == "..") resolvedPath.pop(); - else if (this.path[i] != ".") resolvedPath.push(this.path[i]); - } - return resolvedPath; -} - -/** Trim off the filename. */ -FilePath.prototype.toDir = function() { - if (this.file) this.file = ""; - return this; -} - -/** Go up a directory. */ -FilePath.prototype.upDir = function() { - this.toDir(); - if (this.path.length) this.path.pop(); - return this; -} - -FilePath.prototype.toString = function() { - return this.root - + this.path.join(this.slash) - + ((this.path.length > 0)? this.slash : "") - + this.file; -} - -/** - * Turn a path into just the name of the file. - */ -FilePath.fileName = function(path) { - var nameStart = Math.max(path.lastIndexOf("/")+1, path.lastIndexOf("\\")+1, 0); - return path.substring(nameStart); -} - -/** - * Get the extension of a filename - */ -FilePath.fileExtension = function(filename) { - return filename.split(".").pop().toLowerCase(); -}; - -/** - * Turn a path into just the directory part. - */ -FilePath.dir = function(path) { - var nameStart = Math.max(path.lastIndexOf("/")+1, path.lastIndexOf("\\")+1, 0); - return path.substring(0, nameStart-1); -} - - -importClass(java.lang.System); - -/** - * @namespace A collection of information about your system. - */ -SYS = { - /** - * Information about your operating system: arch, name, version. - * @type string - */ - os: [ - new String(System.getProperty("os.arch")), - new String(System.getProperty("os.name")), - new String(System.getProperty("os.version")) - ].join(", "), - - /** - * Which way does your slash lean. - * @type string - */ - slash: System.getProperty("file.separator")||"/", - - /** - * The path to the working directory where you ran java. - * @type string - */ - userDir: new String(System.getProperty("user.dir")), - - /** - * Where is Java's home folder. - * @type string - */ - javaHome: new String(System.getProperty("java.home")), - - /** - * The absolute path to the directory containing this script. - * @type string - */ - pwd: undefined -}; - -// jsrun appends an argument, with the path to here. -if (arguments[arguments.length-1].match(/^-j=(.+)/)) { - if (RegExp.$1.charAt(0) == SYS.slash || RegExp.$1.charAt(1) == ":") { // absolute path to here - SYS.pwd = new FilePath(RegExp.$1).toDir().toString(); - } - else { // relative path to here - SYS.pwd = new FilePath(SYS.userDir + SYS.slash + RegExp.$1).toDir().toString(); - } - arguments.pop(); -} -else { - print("The run.js script requires you use jsrun.jar."); - quit(); -} - -// shortcut -var File = Packages.java.io.File; - -/** - * @namespace A collection of functions that deal with reading a writing to disk. - */ -IO = { - - /** - * Create a new file in the given directory, with the given name and contents. - */ - saveFile: function(/**string*/ outDir, /**string*/ fileName, /**string*/ content) { - var out = new Packages.java.io.PrintWriter( - new Packages.java.io.OutputStreamWriter( - new Packages.java.io.FileOutputStream(outDir+SYS.slash+fileName), - IO.encoding - ) - ); - out.write(content); - out.flush(); - out.close(); - }, - - /** - * @type string - */ - readFile: function(/**string*/ path) { - if (!IO.exists(path)) { - throw "File doesn't exist there: "+path; - } - return readFile(path, IO.encoding); - }, - - /** - * @param inFile - * @param outDir - * @param [fileName=The original filename] - */ - copyFile: function(/**string*/ inFile, /**string*/ outDir, /**string*/ fileName) { - if (fileName == null) fileName = FilePath.fileName(inFile); - - var inFile = new File(inFile); - var outFile = new File(outDir+SYS.slash+fileName); - - var bis = new Packages.java.io.BufferedInputStream(new Packages.java.io.FileInputStream(inFile), 4096); - var bos = new Packages.java.io.BufferedOutputStream(new Packages.java.io.FileOutputStream(outFile), 4096); - var theChar; - while ((theChar = bis.read()) != -1) { - bos.write(theChar); - } - bos.close(); - bis.close(); - }, - - /** - * Creates a series of nested directories. - */ - mkPath: function(/**Array*/ path) { - if (path.constructor != Array) path = path.split(/[\\\/]/); - var make = ""; - for (var i = 0, l = path.length; i < l; i++) { - make += path[i] + SYS.slash; - if (! IO.exists(make)) { - IO.makeDir(make); - } - } - }, - - /** - * Creates a directory at the given path. - */ - makeDir: function(/**string*/ path) { - (new File(path)).mkdir(); - }, - - /** - * @type string[] - * @param dir The starting directory to look in. - * @param [recurse=1] How many levels deep to scan. - * @returns An array of all the paths to files in the given dir. - */ - ls: function(/**string*/ dir, /**number*/ recurse, _allFiles, _path) { - if (_path === undefined) { // initially - var _allFiles = []; - var _path = [dir]; - } - if (_path.length == 0) return _allFiles; - if (recurse === undefined) recurse = 1; - - dir = new File(dir); - if (!dir.directory) return [String(dir)]; - var files = dir.list(); - - for (var f = 0; f < files.length; f++) { - var file = String(files[f]); - if (file.match(/^\.[^\.\/\\]/)) continue; // skip dot files - - if ((new File(_path.join(SYS.slash)+SYS.slash+file)).list()) { // it's a directory - _path.push(file); - if (_path.length-1 < recurse) IO.ls(_path.join(SYS.slash), recurse, _allFiles, _path); - _path.pop(); - } - else { - _allFiles.push((_path.join(SYS.slash)+SYS.slash+file).replace(SYS.slash+SYS.slash, SYS.slash)); - } - } - - return _allFiles; - }, - - /** - * @type boolean - */ - exists: function(/**string*/ path) { - file = new File(path); - - if (file.isDirectory()){ - return true; - } - if (!file.exists()){ - return false; - } - if (!file.canRead()){ - return false; - } - return true; - }, - - /** - * - */ - open: function(/**string*/ path, /**string*/ append) { - var append = true; - var outFile = new File(path); - var out = new Packages.java.io.PrintWriter( - new Packages.java.io.OutputStreamWriter( - new Packages.java.io.FileOutputStream(outFile, append), - IO.encoding - ) - ); - return out; - }, - - /** - * Sets {@link IO.encoding}. - * Encoding is used when reading and writing text to files, - * and in the meta tags of HTML output. - */ - setEncoding: function(/**string*/ encoding) { - if (/ISO-8859-([0-9]+)/i.test(encoding)) { - IO.encoding = "ISO8859_"+RegExp.$1; - } - else { - IO.encoding = encoding; - } - }, - - /** - * @default "utf-8" - * @private - */ - encoding: "utf-8", - - /** - * Load the given script. - */ - include: function(relativePath) { - load(SYS.pwd+relativePath); - }, - - /** - * Loads all scripts from the given directory path. - */ - includeDir: function(path) { - if (!path) return; - - for (var lib = IO.ls(SYS.pwd+path), i = 0; i < lib.length; i++) - if (/\.js$/i.test(lib[i])) load(lib[i]); - } -} - -// now run the application -IO.include("frame.js"); -IO.include("main.js"); - -main(); diff --git a/jsdoc-toolkit/app/t/TestDoc.js b/jsdoc-toolkit/app/t/TestDoc.js deleted file mode 100644 index c0768b7..0000000 --- a/jsdoc-toolkit/app/t/TestDoc.js +++ /dev/null @@ -1,144 +0,0 @@ -var TestDoc = { - fails: 0, - plans: 0, - passes: 0, - results: [] -}; - -TestDoc.record = function(result) { - TestDoc.results.push(result); - if (typeof result.verdict == "boolean") { - if (result.verdict === false) TestDoc.fails++; - if (result.verdict === true) TestDoc.passes++; - } -} - -TestDoc.prove = function(filePath) { - if (typeof document != "undefined" && typeof document.write != "undefined") { - if (TestDoc.console) print = function(s) { TestDoc.console.appendChild(document.createTextNode(s+"\n")); } - else print = function(s) { document.write(s+"
    "); } - } - TestDoc.run(TestDoc.readFile(filePath)); -} - -TestDoc.run = function(src) { - try { eval(src); } catch(e) { print("# ERROR! "+e); } - - var chunks = src.split(/\/\*t:/); - - var run = function(chunk) { - // local shortcuts - var is = TestDoc.assertEquals; - var isnt = TestDoc.assertNotEquals; - var plan = TestDoc.plan; - var requires = TestDoc.requires; - - try { eval(chunk); } catch(e) { print("# ERROR! "+e); } - } - for (var start = -1, end = 0; (start = src.indexOf("/*t:", end)) > end; start = end) { - run( - src.substring( - start+4, - (end = src.indexOf("*/", start)) - ) - ); - } -} - -TestDoc.Result = function(verdict, message) { - this.verdict = verdict; - this.message = message; -} - -TestDoc.Result.prototype.toString = function() { - if (typeof this.verdict == "boolean") { - return (this.verdict? "ok" : "not ok") + " " + (++TestDoc.report.counter) + " - " + this.message; - } - - return "# " + this.message; -} - -TestDoc.requires = function(file) { - if (!TestDoc.requires.loaded[file]) { - load(file); - TestDoc.requires.loaded[file] = true; - } -} -TestDoc.requires.loaded = {}; - -TestDoc.report = function() { - TestDoc.report.counter = 0; - print("1.."+TestDoc.plans); - for (var i = 0; i < TestDoc.results.length; i++) { - print(TestDoc.results[i]); - } - print("----------------------------------------"); - if (TestDoc.fails == 0 && TestDoc.passes == TestDoc.plans) { - print("All tests successful."); - } - else { - print("Failed " + TestDoc.fails + "/" + TestDoc.plans + " tests, "+((TestDoc.plans == 0)? 0 : Math.round(TestDoc.passes/(TestDoc.passes+TestDoc.fails)*10000)/100)+"% okay. Planned to run "+TestDoc.plans+", did run "+(TestDoc.passes+TestDoc.fails)+".") - } -} - -TestDoc.plan = function(n, message) { - TestDoc.plans += n; - TestDoc.record(new TestDoc.Result(null, message+" ("+n+" tests)")); -} - -TestDoc.assertEquals = function(a, b, message) { - var result = (a == b); - if (!result) message += "\n#\n# " + a + " does not equal " + b + "\n#"; - TestDoc.record(new TestDoc.Result(result, message)); -} - -TestDoc.assertNotEquals = function(a, b, message) { - var result = (a != b); - if (!result) message += "\n#\n# " + a + " equals " + b + "\n#"; - TestDoc.record(new TestDoc.Result(result, message)); -} - -TestDoc.readFile = (function(){ - // rhino - if (typeof readFile == "function") { - return function(url) { - var text = readFile(url); - return text || ""; - } - } - - // a web browser - else { - return function(url) { - var httpRequest; - - if (window.XMLHttpRequest) { // Mozilla, Safari, etc - httpRequest = new XMLHttpRequest(); - } - else if (window.ActiveXObject) { // IE - try { - httpRequest = new ActiveXObject("Msxml2.XMLHTTP"); - } - catch (e) { - try { - httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); - } - catch (e) { - } - } - } - - if (!httpRequest) { throw "Cannot create HTTP Request."; } - - httpRequest.open('GET', url, false); - httpRequest.send(''); - if (httpRequest.readyState == 4) { - if (httpRequest.status >= 400) { - throw "The HTTP Request returned an error code: "+httpRequest.status; - } - } - - return httpRequest.responseText || ""; - } - } -})(); diff --git a/jsdoc-toolkit/app/t/runner.js b/jsdoc-toolkit/app/t/runner.js deleted file mode 100644 index 3f9fb4c..0000000 --- a/jsdoc-toolkit/app/t/runner.js +++ /dev/null @@ -1,13 +0,0 @@ -// try: java -jar ../../jsrun.jar runner.js - -load("TestDoc.js"); - -TestDoc.prove("../frame/Opt.js"); -TestDoc.prove("../lib/JSDOC.js"); -TestDoc.prove("../frame/String.js"); -TestDoc.prove("../lib/JSDOC/DocTag.js"); -TestDoc.prove("../lib/JSDOC/DocComment.js"); -TestDoc.prove("../lib/JSDOC/TokenReader.js"); -TestDoc.prove("../lib/JSDOC/Symbol.js"); - -TestDoc.report(); diff --git a/jsdoc-toolkit/app/test.js b/jsdoc-toolkit/app/test.js deleted file mode 100644 index 8b2dc8b..0000000 --- a/jsdoc-toolkit/app/test.js +++ /dev/null @@ -1,342 +0,0 @@ -load("app/frame/Dumper.js"); -function symbolize(opt) { - symbols = null; - JSDOC.JsDoc(opt); - symbols = JSDOC.JsDoc.symbolSet; -} - -var testCases = [ - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/overview.js"]}); - //print(Dumper.dump(symbols)); - is('symbols.getSymbolByName("My Cool Library").name', 'My Cool Library', 'File overview can be found by alias.'); - } - , - function() { - symbolize({_: [SYS.pwd+"test/name.js"]}); - - is('symbols.getSymbol("Response").name', "Response", 'Virtual class name is found.'); - is('symbols.getSymbol("Response#text").alias', "Response#text", 'Virtual method name is found.'); - is('symbols.getSymbol("Response#text").memberOf', "Response", 'Virtual method parent name is found.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/prototype.js"]}); - - is('symbols.getSymbol("Article").name', "Article", 'Function set to constructor prototype with inner constructor name is found.'); - is('symbols.getSymbol("Article").hasMethod("init")', true, 'The initializer method name of prototype function is correct.'); - is('symbols.getSymbol("Article").hasMember("counter")', true, 'A static property set in the prototype definition is found.'); - is('symbols.getSymbol("Article").hasMember("title")', true, 'An instance property set in the prototype is found.'); - is('symbols.getSymbol("Article#title").isStatic', false, 'An instance property has isStatic set to false.'); - is('symbols.getSymbol("Article.counter").name', "counter", 'A static property set in the initializer has the name set correctly.'); - is('symbols.getSymbol("Article.counter").memberOf', "Article", 'A static property set in the initializer has the memberOf set correctly.'); - is('symbols.getSymbol("Article.counter").isStatic', true, 'A static property set in the initializer has isStatic set to true.'); - } - , - function() { - symbolize({a:true, _: [SYS.pwd+"test/prototype_oblit.js"]}); - - is('symbols.getSymbol("Article").name', "Article", 'Oblit set to constructor prototype name is found.'); - is('typeof symbols.getSymbol("Article.prototype")', "undefined", 'The prototype oblit is not a symbol.'); - is('symbols.getSymbol("Article#getTitle").name', "getTitle", 'The nonstatic method name of prototype oblit is correct.'); - is('symbols.getSymbol("Article#getTitle").alias', "Article#getTitle", 'The alias of non-static method of prototype oblit is correct.'); - is('symbols.getSymbol("Article#getTitle").isStatic', false, 'The isStatic of a nonstatic method of prototype oblit is correct.'); - is('symbols.getSymbol("Article.getTitle").name', "getTitle", 'The static method name of prototype oblit is correct.'); - is('symbols.getSymbol("Article.getTitle").isStatic', true, 'The isStatic of a static method of prototype oblit is correct.'); - is('symbols.getSymbol("Article#getTitle").isa', "FUNCTION", 'The isa of non-static method of prototype oblit is correct.'); - is('symbols.getSymbol("Article.getTitle").alias', "Article.getTitle", 'The alias of a static method of prototype oblit is correct.'); - is('symbols.getSymbol("Article.getTitle").isa', "FUNCTION", 'The isa of static method of prototype oblit is correct.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/prototype_oblit_constructor.js"]}); - - is('symbols.getSymbol("Article").name', "Article", 'Oblit set to constructor prototype with inner constructor name is found.'); - is('symbols.getSymbol("Article#init").name', "init", 'The initializer method name of prototype oblit is correct.'); - is('symbols.getSymbol("Article").hasMember("pages")', true, 'Property set by initializer method "this" is on the outer constructor.'); - is('symbols.getSymbol("Article#Title").name', "Title", 'Name of the inner constructor name is found.'); - is('symbols.getSymbol("Article#Title").memberOf', "Article", 'The memberOf of the inner constructor name is found.'); - is('symbols.getSymbol("Article#Title").isa', "CONSTRUCTOR", 'The isa of the inner constructor name is constructor.'); - is('symbols.getSymbol("Article#Title").hasMember("title")', true, 'A property set on the inner constructor "this" is on the inner constructor.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/inner.js"]}); - - is('symbols.getSymbol("Outer").name', "Outer", 'Outer constructor prototype name is found.'); - is('symbols.getSymbol("Outer").methods.length', 1, 'Inner function doesnt appear as a method of the outer.'); - is('symbols.getSymbol("Outer").hasMethod("open")', true, 'Outer constructors methods arent affected by inner function.'); - is('symbols.getSymbol("Outer-Inner").alias', "Outer-Inner", 'Alias of inner function is found.'); - is('symbols.getSymbol("Outer-Inner").isa', "CONSTRUCTOR", 'isa of inner function constructor is found.'); - is('symbols.getSymbol("Outer-Inner").memberOf', "Outer", 'The memberOf of inner function is found.'); - is('symbols.getSymbol("Outer-Inner").name', "Inner", 'The name of inner function is found.'); - is('symbols.getSymbol("Outer-Inner#name").name', "name", 'A member of the inner function constructor, attached to "this" is found on inner.'); - is('symbols.getSymbol("Outer-Inner#name").memberOf', "Outer-Inner", 'The memberOf of an inner function member is found.'); - } - , - function() { - symbolize({a:true, _: [SYS.pwd+"test/prototype_nested.js"]}); - - is('symbols.getSymbol("Word").name', "Word", 'Base constructor name is found.'); - is('symbols.getSymbol("Word").hasMethod("reverse")', true, 'Base constructor method is found.'); - is('symbols.getSymbol("Word").methods.length', 1, 'Base constructor has only one method.'); - is('symbols.getSymbol("Word").memberOf', "", 'Base constructor memberOf is empty.'); - is('symbols.getSymbol("Word#reverse").name', "reverse", 'Member of constructor prototype name is found.'); - is('symbols.getSymbol("Word#reverse").memberOf', "Word", 'Member of constructor prototype memberOf is found.'); - is('symbols.getSymbol("Word#reverse.utf8").name', "utf8", 'Member of constructor prototype method name is found.'); - is('symbols.getSymbol("Word#reverse.utf8").memberOf', "Word#reverse", 'Static nested member memberOf is found.'); - } - , - function() { - symbolize({a:true, _: [SYS.pwd+"test/namespace_nested.js"]}); - - is('symbols.getSymbol("ns1").name', "ns1", 'Base namespace name is found.'); - is('symbols.getSymbol("ns1").memberOf', "", 'Base namespace memberOf is empty (its a constructor).'); - is('symbols.getSymbol("ns1.ns2").name', "ns2", 'Nested namespace name is found.'); - is('symbols.getSymbol("ns1.ns2").alias', "ns1.ns2", 'Nested namespace alias is found.'); - is('symbols.getSymbol("ns1.ns2").memberOf', "ns1", 'Nested namespace memberOf is found.'); - is('symbols.getSymbol("ns1.ns2.Function1").name', "Function1", 'Method of nested namespace name is found.'); - is('symbols.getSymbol("ns1.ns2.Function1").memberOf', "ns1.ns2", 'Constructor of nested namespace memberOf is found.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/functions_nested.js"]}); - - is('symbols.getSymbol("Zop").name', "Zop", 'Any constructor name is found.'); - is('symbols.getSymbol("Zop").isa', "CONSTRUCTOR", 'It isa constructor.'); - is('symbols.getSymbol("Zop").hasMethod("zap")', true, 'Its method name, set later, is in methods array.'); - is('symbols.getSymbol("Foo").name', "Foo", 'The containing constructor name is found.'); - is('symbols.getSymbol("Foo").hasMethod("methodOne")', true, 'Its method name is found.'); - is('symbols.getSymbol("Foo").hasMethod("methodTwo")', true, 'Its second method name is found.'); - is('symbols.getSymbol("Foo#methodOne").alias', "Foo#methodOne", 'A methods alias is found.'); - is('symbols.getSymbol("Foo#methodOne").isStatic', false, 'A methods is not static.'); - is('symbols.getSymbol("Bar").name', "Bar", 'A global function declared inside another function is found.'); - is('symbols.getSymbol("Bar").isa', "FUNCTION", 'It isa function.'); - is('symbols.getSymbol("Bar").memberOf', "_global_", 'It is global.'); - is('symbols.getSymbol("Foo-inner").name', "inner", 'An inner functions name is found.'); - is('symbols.getSymbol("Foo-inner").memberOf', "Foo", 'It is member of the outer function.'); - is('symbols.getSymbol("Foo-inner").isInner', true, 'It is an inner function.'); - } - , - function() { - symbolize({a:true, _: [SYS.pwd+"test/memberof_constructor.js"]}); - - is('symbols.getSymbol("Circle#Tangent").name', "Tangent", 'Constructor set on prototype using @member has correct name.'); - is('symbols.getSymbol("Circle#Tangent").memberOf', "Circle", 'Constructor set on prototype using @member has correct memberOf.'); - is('symbols.getSymbol("Circle#Tangent").alias', "Circle#Tangent", 'Constructor set on prototype using @member has correct alias.'); - is('symbols.getSymbol("Circle#Tangent").isa', "CONSTRUCTOR", 'Constructor set on prototype using @member has correct isa.'); - is('symbols.getSymbol("Circle#Tangent").isStatic', false, 'Constructor set on prototype using @member is not static.'); - is('symbols.getSymbol("Circle#Tangent#getDiameter").name', "getDiameter", 'Method set on prototype using @member has correct name.'); - is('symbols.getSymbol("Circle#Tangent#getDiameter").memberOf', "Circle#Tangent", 'Method set on prototype using @member has correct memberOf.'); - is('symbols.getSymbol("Circle#Tangent#getDiameter").alias', "Circle#Tangent#getDiameter", 'Method set on prototype using @member has correct alias.'); - is('symbols.getSymbol("Circle#Tangent#getDiameter").isa', "FUNCTION", 'Method set on prototype using @member has correct isa.'); - is('symbols.getSymbol("Circle#Tangent#getDiameter").isStatic', false, 'Method set on prototype using @member is not static.'); - } - , - function() { - symbolize({a:true, p: true, _: [SYS.pwd+"test/memberof.js"]}); - - is('symbols.getSymbol("pack.install").alias', "pack.install", 'Using @memberOf sets alias, when parent name is in memberOf tag.'); - is('symbols.getSymbol("pack.install.overwrite").name', "install.overwrite", 'Using @memberOf sets name, even if the name is dotted.'); - is('symbols.getSymbol("pack.install.overwrite").memberOf', "pack", 'Using @memberOf sets memberOf.'); - is('symbols.getSymbol("pack.install.overwrite").isStatic', true, 'Using @memberOf with value not ending in octothorp sets isStatic to true.'); - } - , - function() { - symbolize({a:true, p: true, _: [SYS.pwd+"test/memberof2.js"]}); - - is('symbols.getSymbol("Foo#bar").alias', "Foo#bar", 'An inner function can be documented as an instance method.'); - is('symbols.getSymbol("Foo.zip").alias', "Foo.zip", 'An inner function can be documented as a static method.'); - is('symbols.getSymbol("Foo.Fiz").alias', "Foo.Fiz", 'An inner function can be documented as a static constructor.'); - is('symbols.getSymbol("Foo.Fiz#fipple").alias', "Foo.Fiz#fipple", 'An inner function can be documented as a static constructor with a method.'); - is('symbols.getSymbol("Foo#blat").alias', "Foo#blat", 'An global function can be documented as an instance method.'); - } - , - function() { - symbolize({a:true, p: true, _: [SYS.pwd+"test/memberof3.js"]}); - - is('symbols.getSymbol("Foo#bar").alias', "Foo#bar", 'A virtual field can be documented as an instance method.'); - is('symbols.getSymbol("Foo2#bar").alias', "Foo2#bar", 'A virtual field with the same name can be documented as an instance method.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/borrows.js"]}); - - is('symbols.getSymbol("Layout").name', "Layout", 'Constructor can be found.'); - is('symbols.getSymbol("Layout").hasMethod("init")', true, 'Constructor method name can be found.'); - is('symbols.getSymbol("Layout").hasMember("orientation")', true, 'Constructor property name can be found.'); - - is('symbols.getSymbol("Page").hasMethod("reset")', true, 'Second constructor method name can be found.'); - is('symbols.getSymbol("Page").hasMember("orientation")', true, 'Second constructor borrowed property name can be found in properties.'); - is('symbols.getSymbol("Page#orientation").memberOf', "Page", 'Second constructor borrowed property memberOf can be found.'); - is('symbols.getSymbol("Page-getInnerElements").alias', "Page-getInnerElements", 'Can borrow an inner function and it is still inner.'); - is('symbols.getSymbol("Page.units").alias', "Page.units", 'Can borrow a static function and it is still static.'); - - is('symbols.getSymbol("ThreeColumnPage#init").alias', "ThreeColumnPage#init", 'Third constructor method can be found even though method with same name is borrowed.'); - is('symbols.getSymbol("ThreeColumnPage#reset").alias', "ThreeColumnPage#reset", 'Borrowed method can be found.'); - is('symbols.getSymbol("ThreeColumnPage#orientation").alias', "ThreeColumnPage#orientation", 'Twice borrowed method can be found.'); - - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/borrows2.js"]}); - - is('symbols.getSymbol("Foo").hasMethod("my_zop")', true, 'Borrowed method can be found.'); - is('symbols.getSymbol("Bar").hasMethod("my_zip")', true, 'Second borrowed method can be found.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/constructs.js"]}); - - is('symbols.getSymbol("Person").hasMethod("say")', true, 'The constructs tag creates a class that lends can add a method to.'); - } - , - function() { - symbolize({a: true, _: [SYS.pwd+"test/augments.js", SYS.pwd+"test/augments2.js"]}); - - is('symbols.getSymbol("Page").augments[0]', "Layout", 'An augmented class can be found.'); - is('symbols.getSymbol("Page#reset").alias', "Page#reset", 'Method of augmenter can be found.'); - is('symbols.getSymbol("Page").hasMethod("Layout#init")', true, 'Method from augmented can be found.'); - is('symbols.getSymbol("Page").hasMember("Layout#orientation")', true, 'Property from augmented can be found.'); - is('symbols.getSymbol("Page").methods.length', 3, 'Methods of augmented class are included in methods array.'); - - is('symbols.getSymbol("ThreeColumnPage").augments[0]', "Page", 'The extends tag is a synonym for augments.'); - is('symbols.getSymbol("ThreeColumnPage").hasMethod("ThreeColumnPage#init")', true, 'Local method overrides augmented method of same name.'); - is('symbols.getSymbol("ThreeColumnPage").methods.length', 3, 'Local method count is right.'); - - is('symbols.getSymbol("NewsletterPage").augments[0]', "ThreeColumnPage", 'Can augment across file boundaries.'); - is('symbols.getSymbol("NewsletterPage").augments.length', 2, 'Multiple augments are supported.'); - is('symbols.getSymbol("NewsletterPage").inherits[0].alias', "Junkmail#annoy", 'Inherited method with augments.'); - is('symbols.getSymbol("NewsletterPage").methods.length', 6, 'Methods of augmented class are included in methods array across files.'); - is('symbols.getSymbol("NewsletterPage").properties.length', 1, 'Properties of augmented class are included in properties array across files.'); - } - , - function() { - symbolize({a:true, _: [SYS.pwd+"test/static_this.js"]}); - - is('symbols.getSymbol("box.holder").name', "holder", 'Static namespace name can be found.'); - is('symbols.getSymbol("box.holder.foo").name', "foo", 'Static namespace method name can be found.'); - is('symbols.getSymbol("box.holder").isStatic', true, 'Static namespace method is static.'); - - is('symbols.getSymbol("box.holder.counter").name', "counter", 'Instance namespace property name set on "this" can be found.'); - is('symbols.getSymbol("box.holder.counter").alias', "box.holder.counter", 'Instance namespace property alias set on "this" can be found.'); - is('symbols.getSymbol("box.holder.counter").memberOf', "box.holder", 'Static namespace property memberOf set on "this" can be found.'); - } - , - function() { - symbolize({a:true, p: true, _: [SYS.pwd+"test/lend.js"]}); - - is('symbols.getSymbol("Person").name', "Person", 'Class defined in lend comment is found.'); - is('symbols.getSymbol("Person").hasMethod("initialize")', true, 'Lent instance method name can be found.'); - is('symbols.getSymbol("Person").hasMethod("say")', true, 'Second instance method can be found.'); - is('symbols.getSymbol("Person#sing").isStatic', false, 'Instance method is known to be not static.'); - - is('symbols.getSymbol("Person.getCount").name', "getCount", 'Static method name from second lend comment can be found.'); - is('symbols.getSymbol("Person.getCount").isStatic', true, 'Static method from second lend comment is known to be static.'); - - is('LOG.warnings.filter(function($){if($.indexOf("notok") > -1) return $}).length', 1, 'A warning is emitted when lending to an undocumented parent.'); - } - , - function() { - symbolize({a:true, _: [SYS.pwd+"test/param_inline.js"]}); - - is('symbols.getSymbol("Layout").params[0].type', "int", 'Inline param name is set.'); - is('symbols.getSymbol("Layout").params[0].desc', "The number of columns.", 'Inline param desc is set from comment.'); - is('symbols.getSymbol("Layout#getElement").params[0].name', "id", 'User defined param documentation takes precedence over parser defined.'); - is('symbols.getSymbol("Layout#getElement").params[0].isOptional', true, 'Default for param is to not be optional.'); - is('symbols.getSymbol("Layout#getElement").params[1].isOptional', false, 'Can mark a param as being optional.'); - is('symbols.getSymbol("Layout#getElement").params[1].type', "number|string", 'Type of inline param doc can have multiple values.'); - is('symbols.getSymbol("Layout#Canvas").params[0].type', "", 'Type can be not defined for some params.'); - is('symbols.getSymbol("Layout#Canvas").params[2].type', "int", 'Type can be defined inline for only some params.'); - is('symbols.getSymbol("Layout#rotate").params.length', 0, 'Docomments inside function sig is ignored without a param.'); - is('symbols.getSymbol("Layout#init").params[2].type', "zoppler", 'Doc comment type overrides inline type for param with same name.'); - } - , - function() { - symbolize({a: true, _: [SYS.pwd+"test/shared.js", SYS.pwd+"test/shared2.js"]}); - - is('symbols.getSymbol("Array#some").name', 'some', 'The name of a symbol in a shared section is found.'); - is('symbols.getSymbol("Array#some").alias', 'Array#some', 'The alias of a symbol in a shared section is found.'); - is('symbols.getSymbol("Array#some").desc', "Extension to builtin array.", 'A description can be shared.'); - is('symbols.getSymbol("Array#filter").desc', "Extension to builtin array.\nChange every element of an array.", 'A shared description is appended.'); - is('symbols.getSymbol("Queue").desc', "A first in, first out data structure.", 'A description is not shared when outside a shared section.'); - is('symbols.getSymbol("Queue.rewind").alias', "Queue.rewind", 'Second shared tag can be started.'); - is('symbols.getSymbol("startOver").alias', "startOver", 'Shared tag doesnt cross over files.'); - } - , - function() { - symbolize({a: true, _: [SYS.pwd+"test/config.js"]}); - is('symbols.getSymbol("Contact").params[0].name', 'person', 'The name of a param is found.'); - is('symbols.getSymbol("Contact").params[1].name', 'person.name', 'The name of a param set with a dot name is found.'); - is('symbols.getSymbol("Contact").params[2].name', 'person.age', 'The name of a second param set with a dot name is found.'); - is('symbols.getSymbol("Contact").params[4].name', 'connection', 'The name of a param after config is found.'); - - is('symbols.getSymbol("Family").params[0].name', 'persons', 'Another name of a param is found.'); - is('symbols.getSymbol("Family").params[1].name', 'persons.Father', 'The name of a param+config is found.'); - is('symbols.getSymbol("Family").params[2].name', 'persons.Mother', 'The name of a second param+config is found.'); - is('symbols.getSymbol("Family").params[3].name', 'persons.Children', 'The name of a third param+config is found.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/ignore.js"]}); - is('LOG.warnings.filter(function($){if($.indexOf("undocumented symbol Ignored") > -1) return $}).length', 1, 'A warning is emitted when documenting members of an ignored parent.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/functions_anon.js"]}); - is('symbols.getSymbol("a.b").alias', 'a.b', 'In anonymous constructor this is found to be the container object.'); - is('symbols.getSymbol("a.f").alias', 'a.f', 'In anonymous constructor this can have a method.'); - is('symbols.getSymbol("a.c").alias', 'a.c', 'In anonymous constructor method this is found to be the container object.'); - is('symbols.getSymbol("g").alias', 'g', 'In anonymous function executed inline this is the global.'); - is('symbols.getSymbol("bar2.p").alias', 'bar2.p', 'In named constructor executed inline this is the container object.'); - is('symbols.getSymbol("module.pub").alias', 'module.pub', 'In parenthesized anonymous function executed inline function scoped variables arent documented.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/oblit_anon.js"]}); - is('symbols.getSymbol("opt").name', 'opt', 'Anonymous object properties are created.'); - is('symbols.getSymbol("opt.conf.keep").alias', 'opt.conf.keep', 'Anonymous object first property is assigned to $anonymous.'); - is('symbols.getSymbol("opt.conf.base").alias', 'opt.conf.base', 'Anonymous object second property is assigned to $anonymous.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/params_optional.js"]}); - is('symbols.getSymbol("Document").params.length', 3, 'Correct number of params are found when optional param syntax is used.'); - is('symbols.getSymbol("Document").params[1].name', "id", 'Name of optional param is found.'); - is('symbols.getSymbol("Document").params[1].isOptional', true, 'Optional param is marked isOptional.'); - is('symbols.getSymbol("Document").params[2].name', "title", 'Name of optional param with default value is found.'); - is('symbols.getSymbol("Document").params[2].isOptional', true, 'Optional param with default value is marked isOptional.'); - is('symbols.getSymbol("Document").params[2].defaultValue', " This is untitled.", 'Optional param default value is found.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/synonyms.js"]}); - is('symbols.getSymbol("myObject.myFunc").type', 'function', 'Type can be set to function.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/event.js"]}); - is('symbols.getSymbol("Kitchen#event:cakeEaten").isEvent', true, 'Function with event prefix is an event.'); - is('symbols.getSymbol("Kitchen#cakeEaten").isa', "FUNCTION", 'Function with same name as event isa function.'); - } - , - function() { - symbolize({x:"js", a:true, _: [SYS.pwd+"test/scripts/"]}); - is('JSDOC.JsDoc.srcFiles.length', 1, 'Only js files are scanned when -x=js.'); - } - , - function() { - symbolize({x:"js", a:true, _: [SYS.pwd+"test/exports.js"]}); - is('symbols.getSymbol("mxn.Map#doThings").name', 'doThings', 'Exports creates a documentation alias that can have methods.'); - } - , - function() { - symbolize({p:true, a:true, _: [SYS.pwd+"test/module.js"]}); - is('symbols.getSymbol("myProject.myModule.myPublicMethod").name', 'myPublicMethod', 'A function wrapped in parens can be recognized.'); - is('symbols.getSymbol("myProject.myModule-myPrivateMethod").name', 'myPrivateMethod', 'A private method in the scope of a function wrapped in parens can be recognized.'); - is('symbols.getSymbol("myProject.myModule-myPrivateVar").name', 'myPrivateVar', 'A private member in the scope of a function wrapped in parens can be recognized.'); - } -]; - -//// run and print results -print(testrun(testCases)); diff --git a/jsdoc-toolkit/app/test/addon.js b/jsdoc-toolkit/app/test/addon.js deleted file mode 100644 index 8886205..0000000 --- a/jsdoc-toolkit/app/test/addon.js +++ /dev/null @@ -1,24 +0,0 @@ -String.prototype.reverse = function() { -} - -String.prototype.reverse.utf8 = function() { -} - -Function.count = function() { -} - -/** @memberOf Function */ -Function.count.reset = function() { -} - -/** @memberOf Function */ -count.getValue = function() { -} - -/** @memberOf Function.prototype */ -getSig = function() { -} - -/** @memberOf Function.prototype */ -Function.prototype.getProps = function() { -} diff --git a/jsdoc-toolkit/app/test/anon_inner.js b/jsdoc-toolkit/app/test/anon_inner.js deleted file mode 100644 index 227eeee..0000000 --- a/jsdoc-toolkit/app/test/anon_inner.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @name bar - * @namespace - */ - -new function() { - /** - * @name bar-foo - * @function - * @param {number} x - */ - function foo(x) { - } -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/augments.js b/jsdoc-toolkit/app/test/augments.js deleted file mode 100644 index 12e706e..0000000 --- a/jsdoc-toolkit/app/test/augments.js +++ /dev/null @@ -1,31 +0,0 @@ -/** -@constructor -*/ -function Layout(p) { - this.init = function(p) { - } - - this.getId = function() { - } - - /** @type Page */ - this.orientation = "landscape"; -} - -/** -@constructor -@augments Layout -*/ -function Page() { - this.reset = function(b) { - } -} - -/** -@extends Page -@constructor -*/ -function ThreeColumnPage() { - this.init = function(resetCode) { - } -} diff --git a/jsdoc-toolkit/app/test/augments2.js b/jsdoc-toolkit/app/test/augments2.js deleted file mode 100644 index e8388f0..0000000 --- a/jsdoc-toolkit/app/test/augments2.js +++ /dev/null @@ -1,26 +0,0 @@ -/** -@constructor -*/ -function LibraryItem() { - this.reserve = function() { - } -} - -/** -@constructor -*/ -function Junkmail() { - this.annoy = function() { - } -} - -/** -@inherits Junkmail.prototype.annoy as pester -@augments ThreeColumnPage -@augments LibraryItem -@constructor -*/ -function NewsletterPage() { - this.getHeadline = function() { - } -} diff --git a/jsdoc-toolkit/app/test/borrows.js b/jsdoc-toolkit/app/test/borrows.js deleted file mode 100644 index a5d8ea4..0000000 --- a/jsdoc-toolkit/app/test/borrows.js +++ /dev/null @@ -1,46 +0,0 @@ -/** -@constructor -*/ -function Layout(p) { - /** initilize 1 */ - this.init = function(p) { - } - - /** get the id */ - this.getId = function() { - } - - /** @type string */ - this.orientation = "landscape"; - - function getInnerElements(elementSecretId){ - } -} - -/** A static method. */ -Layout.units = function() { -} - -/** -@constructor -@borrows Layout#orientation -@borrows Layout-getInnerElements -@borrows Layout.units -*/ -function Page() { - /** reset the page */ - this.reset = function(b) { - } -} - -/** -@constructor -@borrows Layout.prototype.orientation as this.orientation -@borrows Layout.prototype.init as #init -@inherits Page.prototype.reset as #reset -*/ -function ThreeColumnPage() { - /** initilize 2 */ - this.init = function(p) { - } -} diff --git a/jsdoc-toolkit/app/test/borrows2.js b/jsdoc-toolkit/app/test/borrows2.js deleted file mode 100644 index c0d5ea2..0000000 --- a/jsdoc-toolkit/app/test/borrows2.js +++ /dev/null @@ -1,23 +0,0 @@ -// testing circular borrows - -/** - @class - @borrows Bar#zop as this.my_zop -*/ -function Foo() { - /** this is a zip. */ - this.zip = function() {} - - this.my_zop = new Bar().zop; -} - -/** - @class - @borrows Foo#zip as this.my_zip -*/ -function Bar() { - /** this is a zop. */ - this.zop = function() {} - - this.my_zip = new Foo().zip; -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/config.js b/jsdoc-toolkit/app/test/config.js deleted file mode 100644 index 0748a21..0000000 --- a/jsdoc-toolkit/app/test/config.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * @constructor - * @param person The person. - * @param {string} person.name The person's name. - * @config {integer} age The person's age. - * @config [id=1] Optional id number to use. - * @param connection - */ -function Contact(person, connection) { - -} - -/** - * @constructor - * @param persons - * @config {string} Father The paternal person. - * @config {string} Mother The maternal person. - * @config {string[]} Children And the rest. - */ -function Family(/**Object*/persons) { - -} diff --git a/jsdoc-toolkit/app/test/constructs.js b/jsdoc-toolkit/app/test/constructs.js deleted file mode 100644 index cca5dbd..0000000 --- a/jsdoc-toolkit/app/test/constructs.js +++ /dev/null @@ -1,18 +0,0 @@ -var Person = makeClass( - /** - @scope Person - */ - { - /** - This is just another way to define a constructor. - @constructs - @param {string} name The name of the person. - */ - initialize: function(name) { - this.name = name; - }, - say: function(message) { - return this.name + " says: " + message; - } - } -); \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/encoding.js b/jsdoc-toolkit/app/test/encoding.js deleted file mode 100644 index ba64219..0000000 --- a/jsdoc-toolkit/app/test/encoding.js +++ /dev/null @@ -1,10 +0,0 @@ - -/** - * @Constructor - * @desc 配置文件 - * @class 什么也不返回 - */ -function Test(conf) { - // do something; -} - diff --git a/jsdoc-toolkit/app/test/encoding_other.js b/jsdoc-toolkit/app/test/encoding_other.js deleted file mode 100644 index b144da4..0000000 --- a/jsdoc-toolkit/app/test/encoding_other.js +++ /dev/null @@ -1,12 +0,0 @@ - -/** - * @Constructor - * @desc - * @class - */ -function Test(conf) { - // do something; -} - -// run with commanline option -e=iso-8859-5 - diff --git a/jsdoc-toolkit/app/test/event.js b/jsdoc-toolkit/app/test/event.js deleted file mode 100644 index 7e41d6f..0000000 --- a/jsdoc-toolkit/app/test/event.js +++ /dev/null @@ -1,54 +0,0 @@ -/** - * @name Kitchen - * @constructor - * @fires Bakery#event:donutOrdered - */ - -/** - * Fired when some cake is eaten. - * @name Kitchen#event:cakeEaten - * @function - * @param {Number} pieces The number of pieces eaten. - */ - -/** - * Find out if cake was eaten. - * @name Kitchen#cakeEaten - * @function - * @param {Boolean} wasEaten - */ - -/** - * @name getDesert - * @function - * @fires Kitchen#event:cakeEaten - */ - -/** - * @name Bakery - * @constructor - * @extends Kitchen - */ - -/** - * Fired when a donut order is made. - * @name Bakery#event:donutOrdered - * @event - * @param {Event} e The event object. - * @param {String} [e.topping] Optional sprinkles. - */ - -/** - * @constructor - * @borrows Bakery#event:donutOrdered as this.event:cakeOrdered - */ -function CakeShop() { -} - -/** @event */ -CakeShop.prototype.icingReady = function(isPink) { -} - -/** @event */ -function amHungry(/**Boolean*/enoughToEatAHorse) { -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/exports.js b/jsdoc-toolkit/app/test/exports.js deleted file mode 100644 index 63a87cb..0000000 --- a/jsdoc-toolkit/app/test/exports.js +++ /dev/null @@ -1,14 +0,0 @@ -/** @namespace */ -var mxn = {}; - -(function(){ - /** @exports Map as mxn.Map */ - var Map = - /** @constructor */ - mxn.Map = function() { - }; - - /** A method. */ - Map.prototype.doThings = function() { - }; -})(); \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/functions_anon.js b/jsdoc-toolkit/app/test/functions_anon.js deleted file mode 100644 index e9dd6c1..0000000 --- a/jsdoc-toolkit/app/test/functions_anon.js +++ /dev/null @@ -1,39 +0,0 @@ -/** an anonymous constructor executed inline */ -a = new function() { - /** a.b*/ - this.b = 1; - /** a.f */ - this.f = function() { - /** a.c */ - this.c = 2; - } -} - - -/** - named function executed inline -*/ -bar1 = function Zoola1() { - /** property of global */ - this.g = 1; -}(); - -/** - named constructor executed inline -*/ -bar2 = new function Zoola2() { - /** property of bar */ - this.p = 1; -}; - -/** module pattern */ -module = (function () { - /** won't appear in documentation */ - var priv = 1; - - /** @scope module */ - return { - /** will appear as a property of module */ - pub: 1 - } -})(); diff --git a/jsdoc-toolkit/app/test/functions_nested.js b/jsdoc-toolkit/app/test/functions_nested.js deleted file mode 100644 index f044faf..0000000 --- a/jsdoc-toolkit/app/test/functions_nested.js +++ /dev/null @@ -1,33 +0,0 @@ -/** @constructor */ -function Zop() { -} - -/** - @class -*/ -Foo = function(id) { - // this is a bit twisted, but if you call Foo() you will then - // modify Foo(). This is kinda, sorta non-insane, because you - // would have to call Foo() 100% of the time to use Foo's methods - Foo.prototype.methodOne = function(bar) { - alert(bar); - }; - - // same again - Foo.prototype.methodTwo = function(bar2) { - alert(bar2); - }; - - // and these are only executed if the enclosing function is actually called - // and who knows if that will ever happen? - Bar = function(pez) { - alert(pez); - }; - Zop.prototype.zap = function(p){ - alert(p); - }; - - // but this is only visible inside Foo - function inner() { - } -}; diff --git a/jsdoc-toolkit/app/test/global.js b/jsdoc-toolkit/app/test/global.js deleted file mode 100644 index 5ea4894..0000000 --- a/jsdoc-toolkit/app/test/global.js +++ /dev/null @@ -1,13 +0,0 @@ -/** ecks */ -var x = [1, 2, 4]; - -var y = { - foo: function(){ - } -} - -bar = function() { -} - -function zop() { -} diff --git a/jsdoc-toolkit/app/test/globals.js b/jsdoc-toolkit/app/test/globals.js deleted file mode 100644 index 3f83fb1..0000000 --- a/jsdoc-toolkit/app/test/globals.js +++ /dev/null @@ -1,25 +0,0 @@ -function example(/**Circle*/a, b) { - /** a global defined in function */ - var number = a; - - var hideNumber = function(){ - } - - setNumber = function(){ - } - alert('You have chosen: ' + b); -} - -function initPage() { - var supported = document.createElement && document.getElementsByTagName; - if (!supported) return; - // start of DOM script - var x = document.getElementById('writeroot'); - // etc. -} - -/** an example var */ -var document = new Document(x, y); - -var getNumber = function(){ -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/ignore.js b/jsdoc-toolkit/app/test/ignore.js deleted file mode 100644 index d3fac9e..0000000 --- a/jsdoc-toolkit/app/test/ignore.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * A test constructor. - * @constructor - * @ignore - */ -function Ignored() { - /** a method */ - this.bar = function() { - } -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/inner.js b/jsdoc-toolkit/app/test/inner.js deleted file mode 100644 index 37cfa9d..0000000 --- a/jsdoc-toolkit/app/test/inner.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * @constructor - */ -function Outer() { - /** - * @constructor - */ - function Inner(name) { - /** The name of this. */ - this.name = name; - } - - this.open = function(name) { - return (new Inner(name)); - } -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/jsdoc_test.js b/jsdoc-toolkit/app/test/jsdoc_test.js deleted file mode 100644 index 0817712..0000000 --- a/jsdoc-toolkit/app/test/jsdoc_test.js +++ /dev/null @@ -1,477 +0,0 @@ -/** - * @fileoverview This file is to be used for testing the JSDoc parser - * It is not intended to be an example of good JavaScript OO-programming, - * nor is it intended to fulfill any specific purpose apart from - * demonstrating the functionality of the - * JSDoc parser - * - * @author Gabriel Reid gab_reid@users.sourceforge.net - * @version 0.1 - */ - - -/** - * Construct a new Shape object. - * @class This is the basic Shape class. - * It can be considered an abstract class, even though no such thing - * really existing in JavaScript - * @constructor - * @throws MemoryException if there is no more memory - * @throws GeneralShapeException rarely (if ever) - * @return {Shape|Coordinate} A new shape. - */ -function Shape(){ - - /** - * This is an example of a function that is not given as a property - * of a prototype, but instead it is assigned within a constructor. - * For inner functions like this to be picked up by the parser, the - * function that acts as a constructor must be denoted with - * the @constructor tag in its comment. - * @type String - */ - this.getClassName = function(){ - return "Shape"; - } - - /** - * This is an inner method, just used here as an example - * @since version 0.5 - * @author Sue Smart - */ - function addReference(){ - // Do nothing... - } - -} - -/** - * Create a new Hexagon instance. - * @extends Shape - * @class Hexagon is a class that is a logical sublcass of - * {@link Shape} (thanks to the @extends tag), but in - * reality it is completely unrelated to Shape. - * @param {int} sideLength The length of one side for the new Hexagon - * @example - * var h = new Hexagon(2); - * @example - * if (hasHex) { - * hex = new Hexagon(5); - * color = hex.getColor(); - * } - */ -function Hexagon(sideLength) { -} - - -/** - * This is an unattached (static) function that adds two integers together. - * @param {int} One The first number to add - * @param {int} Two The second number to add - * @author Gabriel Reid - * @deprecated So you shouldn't use it anymore! Use {@link Shape#getClassName} instead. - */ -function Add(One, Two){ - return One + Two; -} - - -/** - * The color of this shape - * @type Color - */ -Shape.prototype.color = null; - -/** - * The border of this shape. - * @field - * @type int - */ -Shape.prototype.border = function(){return border;}; - -/* - * These are all the instance method implementations for Shape - */ - -/** - * Get the coordinates of this shape. It is assumed that we're always talking - * about shapes in a 2D location here. - * @requires The {@link Shape} class - * @returns A Coordinate object representing the location of this Shape - * @type Coordinate[] - */ -Shape.prototype.getCoords = function(){ - return this.coords; -} - -/** - * Get the color of this shape. - * @see #setColor - * @see The Color library. - * @link Shape - * @type Color - */ -Shape.prototype.getColor = function(){ - return this.color; -} - -/** - * Set the coordinates for this Shape - * @param {Coordinate} coordinates The coordinates to set for this Shape - */ -Shape.prototype.setCoords = function(coordinates){ - this.coords = coordinates; -} - -/** - * Set the color for this Shape - * @param {Color} color The color to set for this Shape - * @param other There is no other param, but it can still be documented if - * optional parameters are used - * @throws NonExistantColorException (no, not really!) - * @see #getColor - */ -Shape.prototype.setColor = function(color){ - this.color = color; -} - -/** - * Clone this shape - * @returns A copy of this shape - * @type Shape - * @author Gabriel Reid - */ -Shape.prototype.clone = function(){ - return new Shape(); -} - -/** - * Create a new Rectangle instance. - * @class A basic rectangle class, inherits from Shape. - * This class could be considered a concrete implementation class - * @constructor - * @param {int} width The optional width for this Rectangle - * @param {int} height Thie optional height for this Rectangle - * @author Gabriel Reid - * @see Shape is the base class for this - * @augments Shape - * @hilited - */ -function Rectangle(width, // This is the width - height // This is the height - ){ - if (width){ - this.width = width; - if (height){ - this.height = height; - } - } -} - - -/* Inherit from Shape */ -Rectangle.prototype = new Shape(); - -/** - * Value to represent the width of the Rectangle. - *
    Text in bold and italic and a - * link to SourceForge - * @private - * @type int - */ -Rectangle.prototype.width = 0; - -/** - * Value to represent the height of the Rectangle - * @private - * @type int - */ -Rectangle.prototype.height = 0; - -/** - * Get the type of this object. - * @type String - */ -Rectangle.prototype.getClassName= function(){ - return "Rectangle"; -} - -/** - * Get the value of the width for the Rectangle - * @type int - * @see Rectangle#setWidth - */ -Rectangle.prototype.getWidth = function(){ - return this.width; -} - -/** - * Get the value of the height for the Rectangle. - * Another getter is the {@link Shape#getColor} method in the - * {@link Shape} base class. - * @return The height of this Rectangle - * @type int - * @see Rectangle#setHeight - */ -Rectangle.prototype.getHeight = function(){ - return this.height; -} - -/** - * Set the width value for this Rectangle. - * @param {int} width The width value to be set - * @see #setWidth - */ -Rectangle.prototype.setWidth = function(width){ - this.width = width; -} - -/** - * Set the height value for this Rectangle. - * @param {int} height The height value to be set - * @see #getHeight - */ -Rectangle.prototype.setHeight = function(height){ - this.height = height; -} - -/** - * Get the value for the total area of this Rectangle - * @return total area of this Rectangle - * @type int - */ -Rectangle.prototype.getArea = function(){ - return width * height; -} - - -/** - * Create a new Square instance. - * @class A Square is a subclass of {@link Rectangle} - * @param {int} width The optional width for this Rectangle - * @param {int} height The optional height for this Rectangle - * @augments Rectangle - */ -function Square(width, height){ - if (width){ - this.width = width; - if (height){ - this.height = height; - } - } - -} - -/* Square is a subclass of Rectangle */ -Square.prototype = new Rectangle(); - -/** - * Set the width value for this Shape. - * @param {int} width The width value to be set - * @see #getWidth - */ -Square.prototype.setWidth = function(width){ - this.width = this.height = width; -} - -/** - * Set the height value for this Shape - * Sets the {@link Rectangle#height} attribute in the Rectangle. - * @param {int} height The height value to be set - */ -Square.prototype.setHeight = function(height){ - this.height = this.width = height; -} - - -/** - * Create a new Circle instance based on a radius. - * @class Circle class is another subclass of Shape - * @extends Shape - * @param {int} radius The optional radius of this {@link Circle } - * @mixin Square.prototype.setWidth as this.setDiameter - */ -function Circle(radius){ - if (radius) { - /** The radius of the this Circle. */ - this.radius = radius; - } -} - -/* Circle inherits from {@link Shape} */ -Circle.prototype = new Shape(); - -/** - * The radius value for this Circle - * @private - * @type int - */ -Circle.prototype.radius = 0; - -/** - * A very simple class (static) field that is also a constant - * @final - * @type float - */ -Circle.PI = 3.14; - -/** - * Get the radius value for this Circle - * @type int - * @see #setRadius - */ -Circle.prototype.getRadius = function(){ - return this.radius; -} - -/** - * Set the radius value for this Circle - * @param {int} radius The {@link Circle#radius} value to set - * @see #getRadius - */ -Circle.prototype.setRadius = function(radius){ - this.radius = radius; -} - -/** - * An example of a class (static) method that acts as a factory for Circle - * objects. Given a radius value, this method creates a new Circle. - * @param {int} radius The radius value to use for the new Circle. - * @type Circle - */ -Circle.createCircle = function(radius){ - return new Circle(radius); -} - - -/** - * Create a new Coordinate instance based on x and y grid data. - * @class Coordinate is a class that can encapsulate location information. - * @param {int} [x=0] The optional x portion of the Coordinate - * @param {int} [y=0] The optinal y portion of the Coordinate - */ -function Coordinate(x, y){ - if (x){ - this.x = x; - if (y){ - this.y = y; - } - } -} - -/** - * The x portion of the Coordinate - * @type int - * @see #getX - * @see #setX - */ -Coordinate.prototype.x = 0; - -/** - * The y portion of the Coordinate - * @type int - * @see #getY - * @see #setY - */ -Coordinate.prototype.y = 0; - -/** - * Gets the x portion of the Coordinate. - * @type int - * @see #setX - */ -Coordinate.prototype.getX = function(){ - return this.x; -} - -/** - * Get the y portion of the Coordinate. - * @type int - * @see #setY - */ -Coordinate.prototype.getY = function(){ - return this.y; -} - -/** - * Sets the x portion of the Coordinate. - * @param {int} x The x value to set - * @see #getX - */ -Coordinate.prototype.setX = function(x){ - this.x = x; -} - -/** - * Sets the y portion of the Coordinate. - * @param {int} y The y value to set - * @see #getY - */ -Coordinate.prototype.setY = function(y){ - this.y = y; -} - -/** - * @class This class exists to demonstrate the assignment of a class prototype - * as an anonymous block. - */ -function ShapeFactory(){ -} - -ShapeFactory.prototype = { - /** - * Creates a new {@link Shape} instance. - * @return A new {@link Shape} - * @type Shape - */ - createShape: function(){ - return new Shape(); - } -} - -/** - * An example of a singleton class - * @param ... Arguments represent {@link coordinate}s in the shape. - * @constructor - */ -MySingletonShapeFactory = function(){ - - /** - * Get the next {@link Shape} - * @type Shape - * @return A new {@link Shape} - */ - this.getShape = function(){ - return null; - } - -} - - -/** - * Create a new Foo instance. - * @class This is the Foo class. It exists to demonstrate 'nested' classes. - * @constructor - * @see Foo.Bar - */ -function Foo(){} - -/** - * Creates a new instance of Bar. - * @class This class exists to demonstrate 'nested' classes. - * @constructor - * @see Foo.Bar - */ -function Bar(){} - -/** - * Nested class - * @constructor - */ -Foo.Bar = function(){ - /** The x. */ this.x = 2; -} - -Foo.Bar.prototype = new Bar(); -/** The y. */ -Foo.Bar.prototype.y = '3'; diff --git a/jsdoc-toolkit/app/test/lend.js b/jsdoc-toolkit/app/test/lend.js deleted file mode 100644 index 92b15d5..0000000 --- a/jsdoc-toolkit/app/test/lend.js +++ /dev/null @@ -1,33 +0,0 @@ - /** @class */ -var Person = Class.create( - /** - @lends Person.prototype - */ - { - initialize: function(name) { - this.name = name; - }, - say: function(message) { - return this.name + ': ' + message; - } - } - ); - -/** @lends Person.prototype */ -{ - /** like say but more musical */ - sing: function(song) { - } -} - -/** @lends Person */ -{ - getCount: function() { - } -} - -/** @lends Unknown.prototype */ -{ - notok: function() { - } -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/memberof.js b/jsdoc-toolkit/app/test/memberof.js deleted file mode 100644 index 883bbde..0000000 --- a/jsdoc-toolkit/app/test/memberof.js +++ /dev/null @@ -1,19 +0,0 @@ -/** @constructor */ -pack = function() { - this.init = function(){} - function config(){} -} - - pack.build = function(task) {}; - -/** @memberOf pack */ -pack.install = function() {} - -/** @memberOf pack */ -pack.install.overwrite = function() {} - -/** @memberOf pack */ -clean = function() {} - -/** @memberOf pack-config */ -install = function() {}; diff --git a/jsdoc-toolkit/app/test/memberof2.js b/jsdoc-toolkit/app/test/memberof2.js deleted file mode 100644 index bc3d9d8..0000000 --- a/jsdoc-toolkit/app/test/memberof2.js +++ /dev/null @@ -1,38 +0,0 @@ -/** - * @constructor - */ -function Foo() { - /** - @memberOf Foo.prototype - */ - function bar(a, b) { - } - - /** - @memberOf Foo - */ - var zip = function(p, q) { - } - - /** - @memberOf Foo - */ - function zop( x,y ) { - } - - /** - @memberOf Foo - @constructor - */ - function Fiz() { - /** A method of Foo#Fiz. */ - this.fipple = function(fop){} - } -} - -/** - @memberOf Foo# - */ -var blat = function() { - -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/memberof3.js b/jsdoc-toolkit/app/test/memberof3.js deleted file mode 100644 index 8c25942..0000000 --- a/jsdoc-toolkit/app/test/memberof3.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @name Foo -* @class -*/ - -/**#@+ -* @memberOf Foo# -* @field -*/ - -/** -* @name bar -* @type Object[] -*/ - -/**#@-*/ - -/** -* @name Foo2 -* @class -*/ - -/**#@+ -* @memberOf Foo2# -* @field -*/ - -/** -* @name bar -* @type Object[] -*/ - -/**#@-*/ \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/memberof_constructor.js b/jsdoc-toolkit/app/test/memberof_constructor.js deleted file mode 100644 index 80fde73..0000000 --- a/jsdoc-toolkit/app/test/memberof_constructor.js +++ /dev/null @@ -1,17 +0,0 @@ -/** @constructor */ -function Circle(){} - -/** - @constructor - @memberOf Circle# - */ -Circle.prototype.Tangent = function(){}; - -// renaming Circle#Tangent to Circle#Circle#Tangent - -/** - @memberOf Circle#Tangent# - */ -Circle.prototype.Tangent.prototype.getDiameter = function(){}; - - diff --git a/jsdoc-toolkit/app/test/module.js b/jsdoc-toolkit/app/test/module.js deleted file mode 100644 index 5b3fe42..0000000 --- a/jsdoc-toolkit/app/test/module.js +++ /dev/null @@ -1,17 +0,0 @@ -/** @namespace */ -myProject = myProject || {}; - -/** @namespace */ -myProject.myModule = (function () { - /** describe myPrivateVar here */ - var myPrivateVar = ""; - - var myPrivateMethod = function () { - } - - /** @scope myProject.myModule */ - return { - myPublicMethod: function () { - } - }; -})(); \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/multi_methods.js b/jsdoc-toolkit/app/test/multi_methods.js deleted file mode 100644 index bab35c7..0000000 --- a/jsdoc-toolkit/app/test/multi_methods.js +++ /dev/null @@ -1,25 +0,0 @@ - -/** - Get the entire flavor. - @name flavor^3 - @function - @returns {Object} The entire flavor hash. -*/ -/** - Get a named flavor. - @name flavor^2 - @function - @param {String} name The name of the flavor to get. - @returns {String} The value of that flavor. -*/ -/** - Set the flavor. - @param {String} name The name of the flavor to set. - @param {String} value The value of the flavor. - @returns {String} The value of that flavor. -*/ -function flavor(name, value) { - if (arguments.length > 1) flavor[name] = value; - else if (arguments.length == 1) return flavor[name]; - else return flavor; -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/name.js b/jsdoc-toolkit/app/test/name.js deleted file mode 100644 index e88a51a..0000000 --- a/jsdoc-toolkit/app/test/name.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - @name Response - @class -*/ - -Response.prototype = { - /** - @name Response#text - @function - @description - Gets the body of the response as plain text - @returns {String} - Response as text - */ - - text: function() { - return this.nativeResponse.responseText; - } -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/namespace_nested.js b/jsdoc-toolkit/app/test/namespace_nested.js deleted file mode 100644 index 46cafa2..0000000 --- a/jsdoc-toolkit/app/test/namespace_nested.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - @namespace This is the first namespace. -*/ -ns1 = {}; - -/** - This is the second namespace. - @namespace -*/ -ns1.ns2 = {}; - -/** - This part of ns1.ns2 - @constructor -*/ -ns1.ns2.Function1 = function() { -}; - -ns1.staticFunction = function() { -}; - -/** A static field in a namespace. */ -ns1.ns2.staticField = 1; diff --git a/jsdoc-toolkit/app/test/nocode.js b/jsdoc-toolkit/app/test/nocode.js deleted file mode 100644 index 1cf99bc..0000000 --- a/jsdoc-toolkit/app/test/nocode.js +++ /dev/null @@ -1,13 +0,0 @@ -/**#nocode+*/ - /** - @name star - @function - */ - function blahblah() { - - } -/**#nocode-*/ - -function yaddayadda() { - -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/oblit_anon.js b/jsdoc-toolkit/app/test/oblit_anon.js deleted file mode 100644 index 8d9e941..0000000 --- a/jsdoc-toolkit/app/test/oblit_anon.js +++ /dev/null @@ -1,20 +0,0 @@ -/** the options */ -opt = Opt.get( - arguments, - { - d: "directory", - c: "conf", - "D[]": "define" - } -); - -/** configuration */ -opt.conf = { - /** keep */ - keep: true, - /** base */ - base: getBase(this, {p: properties}) -} - - - diff --git a/jsdoc-toolkit/app/test/overview.js b/jsdoc-toolkit/app/test/overview.js deleted file mode 100644 index 1dfc09b..0000000 --- a/jsdoc-toolkit/app/test/overview.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @overview This "library" contains a - * lot of classes and functions. - * @example -
    -	var x (x < 1);
    -	alert("This 'is' \"code\"");
    - 
    - * @name My Cool Library - * @author Joe Smith jsmith@company.com - * @version 0.1 - */ - -/** - * Gets the current foo - * @param {String} fooId The unique identifier for the foo. - * @return {Object} Returns the current foo. - */ -function getFoo(fooID){ -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/param_inline.js b/jsdoc-toolkit/app/test/param_inline.js deleted file mode 100644 index 09845b2..0000000 --- a/jsdoc-toolkit/app/test/param_inline.js +++ /dev/null @@ -1,37 +0,0 @@ -/** - @constructor - @param columns The number of columns. -*/ -function Layout(/**int*/columns){ - /** - @param [id] The id of the element. - @param elName The name of the element. - */ - this.getElement = function( - /** string */ elName, - /** number|string */ id - ) { - }; - - /** - @constructor - */ - this.Canvas = function(top, left, /**int*/width, height) { - /** Is it initiated yet? */ - this.initiated = true; - } - - this.rotate = function(/**nothing*/) { - } - - /** - @param x - @param y - @param {zoppler} z*/ - this.init = function(x, y, /**abbler*/z) { - /** The xyz. */ - this.xyz = x+y+z; - this.getXyz = function() { - } - } -} diff --git a/jsdoc-toolkit/app/test/params_optional.js b/jsdoc-toolkit/app/test/params_optional.js deleted file mode 100644 index 18bf598..0000000 --- a/jsdoc-toolkit/app/test/params_optional.js +++ /dev/null @@ -1,8 +0,0 @@ - -/** - * @param {Page[]} pages - * @param {number} [id] Specifies the id, if applicable. - * @param {String} [title = This is untitled.] Specifies the title. - */ -function Document(pages, id, title){ -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/prototype.js b/jsdoc-toolkit/app/test/prototype.js deleted file mode 100644 index 1147008..0000000 --- a/jsdoc-toolkit/app/test/prototype.js +++ /dev/null @@ -1,17 +0,0 @@ -/** @constructor */ -function Article() { -} - -Article.prototype.init = function(title) { - /** the instance title */ - this.title = title; - - /** the static counter */ - Article.counter = 1; -} - -a = new Article(); -a.Init("my title"); - -print(a.title); -print(Article.counter); \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/prototype_nested.js b/jsdoc-toolkit/app/test/prototype_nested.js deleted file mode 100644 index e8ca1ce..0000000 --- a/jsdoc-toolkit/app/test/prototype_nested.js +++ /dev/null @@ -1,9 +0,0 @@ -/** @constructor */ -function Word() { -} - -Word.prototype.reverse = function() { -} - -Word.prototype.reverse.utf8 = function() { -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/prototype_oblit.js b/jsdoc-toolkit/app/test/prototype_oblit.js deleted file mode 100644 index 6cfc39c..0000000 --- a/jsdoc-toolkit/app/test/prototype_oblit.js +++ /dev/null @@ -1,13 +0,0 @@ -/** @constructor */ -function Article() { -} - -Article.prototype = { - /** instance get title */ - getTitle: function(){ - } -} - -/** static get title */ -Article.getTitle = function(){ -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/prototype_oblit_constructor.js b/jsdoc-toolkit/app/test/prototype_oblit_constructor.js deleted file mode 100644 index 9248248..0000000 --- a/jsdoc-toolkit/app/test/prototype_oblit_constructor.js +++ /dev/null @@ -1,24 +0,0 @@ -/** @constructor */ -function Article() { -} - -Article.prototype = { - /** @constructor */ - Title: function(title) { - /** the value of the Title instance */ - this.title = title; - }, - - init: function(pages) { - /** the value of the pages of the Article instance */ - this.pages = pages; - } -} - -f = new Article(); -f.init("one two three"); - -t = new f.Title("my title"); - -print(f.pages); -print(t.title); \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/public.js b/jsdoc-toolkit/app/test/public.js deleted file mode 100644 index 35d34f6..0000000 --- a/jsdoc-toolkit/app/test/public.js +++ /dev/null @@ -1,10 +0,0 @@ -/**@constructor*/ -function Foo() { - /** - @public - @static - @field - */ - var bar = function(x) { - } -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/scripts/code.js b/jsdoc-toolkit/app/test/scripts/code.js deleted file mode 100644 index e9d7ed2..0000000 --- a/jsdoc-toolkit/app/test/scripts/code.js +++ /dev/null @@ -1,5 +0,0 @@ -/** - @class - */ -function thisiscode() { -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/scripts/notcode.txt b/jsdoc-toolkit/app/test/scripts/notcode.txt deleted file mode 100644 index fcd737e..0000000 --- a/jsdoc-toolkit/app/test/scripts/notcode.txt +++ /dev/null @@ -1,5 +0,0 @@ -(This is not code) -function foo(){{{{ -( -! -@ \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/shared.js b/jsdoc-toolkit/app/test/shared.js deleted file mode 100644 index e1c277a..0000000 --- a/jsdoc-toolkit/app/test/shared.js +++ /dev/null @@ -1,42 +0,0 @@ - -/** - * Builtin object. - * @class - * @name Array - */ - -/**#@+ - * Extension to builtin array. - * @memberOf Array - * @method - */ - -/** - * @returns Boolen if some array members... - */ -Array.prototype.some = function(){}; - -/** - * Change every element of an array. - * @returns Filtered array copy. - */ -Array.prototype.filter = function(){}; - -/**#@-*/ - - -/** - * A first in, first out data structure. - * @constructor - */ -Queue = function(){}; - -/**#@+ - * Extension to Queue. - * @memberOf Queue - */ - -rewind = function(){ -} - -// should close automatically here. \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/shared2.js b/jsdoc-toolkit/app/test/shared2.js deleted file mode 100644 index 3f7736a..0000000 --- a/jsdoc-toolkit/app/test/shared2.js +++ /dev/null @@ -1,2 +0,0 @@ -startOver = function(){ -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/shortcuts.js b/jsdoc-toolkit/app/test/shortcuts.js deleted file mode 100644 index f738f1e..0000000 --- a/jsdoc-toolkit/app/test/shortcuts.js +++ /dev/null @@ -1,22 +0,0 @@ -// /**#=+ -// * { -// * 'D': 'Date.prototype', -// * '$N': 'Number' -// * } -// */ -// var D = Date.prototype, -// $N = Number; -// -// D.locale = function(){ -// }; -// -// /** -// @return {string} The cardinal number string. -// */ -// $N.nth = function(n){ -// }; -// -// LOAD.file = function(){ -// } -// -// /**#=-*/ \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/static_this.js b/jsdoc-toolkit/app/test/static_this.js deleted file mode 100644 index 9407b20..0000000 --- a/jsdoc-toolkit/app/test/static_this.js +++ /dev/null @@ -1,13 +0,0 @@ -/** the parent */ -var box = {}; - -/** @namespace */ -box.holder = {} - -box.holder.foo = function() { - /** the counter */ - this.counter = 1; -} - -box.holder.foo(); -print(box.holder.counter); diff --git a/jsdoc-toolkit/app/test/synonyms.js b/jsdoc-toolkit/app/test/synonyms.js deleted file mode 100644 index 09066b9..0000000 --- a/jsdoc-toolkit/app/test/synonyms.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - @class - @inherits Bar#zop as #my_zop -*/ -function Foo() { - /** this is a zip. */ - this.zip = function() {} - - /** from Bar */ - this.my_zop = new Bar().zop; -} - -/** - @class - @borrows Foo#zip as this.my_zip -*/ -function Bar() { - /** this is a zop. */ - this.zop = function() {} - - /** from Foo */ - this.my_zip = new Foo().zip; -} - -/** @namespace */ -var myObject = { - /** - @type function - */ - myFunc: getFunction() -} \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/tosource.js b/jsdoc-toolkit/app/test/tosource.js deleted file mode 100644 index 706d476..0000000 --- a/jsdoc-toolkit/app/test/tosource.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * @param {Object} object - * @return {string} - */ -function valueOf(object) {} - -/** - * @param {Object} object - * @return {string} - */ -function toString(object) {} - -/** - * @param {Object} object - * @return {string} - */ -function toSource(object) {} - -/** - * @param {Object} object - * @return {string} - */ -function constructor(object) {} \ No newline at end of file diff --git a/jsdoc-toolkit/app/test/variable_redefine.js b/jsdoc-toolkit/app/test/variable_redefine.js deleted file mode 100644 index 2c07da0..0000000 --- a/jsdoc-toolkit/app/test/variable_redefine.js +++ /dev/null @@ -1,14 +0,0 @@ -/** @constructor */ -function Foo() { - var bar = 1; - bar = 2; // redefining a private - - this.baz = 1; - baz = 2; // global - - /** a private */ - var blap = { - /** in here */ - tada: 1 - } -} \ No newline at end of file diff --git a/jsdoc-toolkit/changes.txt b/jsdoc-toolkit/changes.txt deleted file mode 100644 index b0acbab..0000000 --- a/jsdoc-toolkit/changes.txt +++ /dev/null @@ -1,124 +0,0 @@ -== 2.4.0 == - - * Fixed bug that added mutiple symbols with the same name to docs. - * Added support for the -m option to suppress warnings for multiple docs. - * Added patch by brownsea42 to support quoted user variables on the command line. ( issue #281 ) - * Fixed bug that sometimes caused links to events to be incorrect. ( issue #292 ) - -== 2.3.3 == - - * Fixed bug that made all fields declared with the @property tag static. ( issue #262 ) - * Minor fix to better handle trailing slash on path to template (from jwmetrocat). ( issue #237 ) - * Fix for @memberOf when applied to inner members. ( issue #264 ) - * Fix for @memberOf when applied to symbols documented with @name. ( issue #260 ) - * Applied patch from kunhualqk, fix for bug where @link to borrowed member did not resolve to parent class. ( issue #218 ) - * Fix for @requires not linking back to the required class - * Added experimental support for @constructs to have an argument, the class name, when applied to a function assignment. - -== 2.3.2 == - - * Minor update to the usage notes and corrected the version number displayed in the output. - -== 2.3.1 == - - * Fixed HTML typo in allfiles template. ( issue #228 ) - * Modified template to display version information for classes. - * Modified template to better support multiple methods with the same name. - * Fixed bug that caused template to error when backtick characters appeared around class names. - -== 2.3.0 == - - * Added option -u, --unique to avoid bug that causes multiple symbols with names that differ only by case to overwrite each others output on case-insensitive filesystems. ( issue #162 ) - * Fixed bug where {@links} in @deprecated tags did not resolve. ( issue #220 ) - * Fixed bug that caused parens around a function to make it to be unrecognized. ( issue #213 ) - * Fixed bug prevented explicit links to named anchors from working (thanks katgao.pku). ( issue #215 ) - * Fixed bug that prevented full description from appearing in file overview. ( issue #224 ) - -== 2.2.1 == - - * Fixed bug with class template, where sorting of methods was accidentally removed (thanks dezfowler). - * Added missing test files for the @exports unit tests. - -== 2.2.0 == - - * Fixed bug that caused exception when given a folder containing non-js files, even with the x commandline option set to "js". ( issue #193 ) - * Fixed typo in index template [patch submitted by olle]. ( issue #198 ) - * Modified @borrows tag experimentally to allow for missing "as ..." clause. - * Added support for the @exports tag, to allow one symbol to be documented as another. - * Added support for the -S option to document code following the Secure Modules pattern. - -== 2.1.0 == - - * Added support for the @event tag. - * Fixed bug that prevented the : character from appearing in symbol names. - * Fixed bug that prevented underscored symbols marked with @public being tagged as private. (issue #184 ) - * Fixed bug that randomly affected the @memberOf tag when the name of the symbol did not include the parent name. - * Fixed bug that prevented templates that were not in the jsdoc-toolkit folder from being found. ( issue #176 ) - * Added ability to check for trailing slash on template path. ( issue #177 ) - * Modified classDesc so that it no longer is appended with the constructor desc. - * Fixed call to plugin onDocCommentSrc. - * Added missing support for inline doc comments for function return types. ( issue #189 ) - * Added command line option -q, --quiet. - * Added command line option -E, --exclude. ( issue #143 ) - * Added 2 more hooks for plugins. ( issue #163 ) - * Added support for extending built-ins. ( issue #160 ) - * Added "compact" option to JSDOC.JsPlate.prototype.process. ( issue #159 ) - * @augments no longer documents static members as inherited. ( issue #138 ) - * @link to a class now goes to the page for that class, not the constructor. ( issue #178 ) - * Warnings of mismatched curly brace now include filename. ( issue #166 ) - * Fixed bug affecting template paths loaded via a configuration file when the trailing slash is missing. ( issue #191 ) - * Minor optimizations. - -== 2.0.2 == - - * Fixed bug that sometimes caused an example of division in the source code to be interpretted as a regex by the JsDoc Toolkit analyzer. ( issue #158 ) - * Fixed a bug that prevented private variables marked as @public from appearing in the documentation. ( issue #161 ) - * Fixed bug that prevented variable names with underscored properties from appearing in summaries. ( issue #173 ) - -== 2.0.1 == - - * Fixed bug that prevented @fileOverview tag from being recognized. - * Added support for @fieldOf as a synonym for @field plus @memberOf. - * Added support for @name tag in a @fileOverview comment to control the displayed name of the file. - * Added support for multiple @example tags. ( issue #152 ) - * Modified style sheet of jsdoc template to make more readable. ( issue #151 ) - * Fixed bug that prevented @since documentation from displaying correctly when it appeared in a class. ( issue #150 ) - * Fixed bug that caused inhertited properties to sometimes not resolve correctly. ( issue #144 ) - * Modified so that trailing whitespace in @example is always trimmed. ( issue #153 ) - * Added support for elseif to JsPlate. (hat tip to fredck) - * Added support for @location urls in the @overview comment to the jsdoc template. - -== Changes From Versions 1.4.0 to 2.0.0 == - - * Upgraded included version of Rhino from 1.6 to 1.7R1. - * Removed circular references in parsed documentation objects. - * Improved inheritance handling, now properties and events can be inherited same as methods. - * Improved handling of cross-file relationships, now having two related objects in separate files is not a problem. - * Improved ability to recognize membership of previously defined objects. - * Added ability to redefine parsing behavior with plugins. - * @methodOf is a synonym for @function and @memberOf. - * Added @default to document default values of members that are objects. - * Added ability to parse and refer to inner functions. - * Fixed bug that appeared when calling a method to set properties of the instance referred to by "this". - * Added ability to automatically create links to other symbols. - * New "jsdoc" template now produces fully W3C valid XHTML. - * Inline parameter type hint comments are now documented. - * Fixed error: Locally scoped variables (declared with var) no longer appear as global. - * It is now possible to run JsDoc Toolkit from any directory. - * Added support for inline {@link ...} tags. - * Added support for the -H command-line option to allow for custom content handlers. - * Tag names @inherits and @scope changed to @borrows and @lends. - ? Combining @constructor in a doclet with @lends now supported. - * Multiple @lend tags now supported. - * Added support for the @constructs tag, used inside a @lends block. - * Added support for the @constant tag. - * Fixed bug that prevented the use of [] as a default value. - * Added support for the @field tag. - * Added support for the @public tag (applied to inner functions). - * @namespace tag can now be applied to functions, not just object literals. - * Added support for the -s command line option to suppress source code output. - * Added new unit test framework. - * Underscored symbols are now treated as if they have a @private tag by default. - * Improved support for anonymous constructors. - * Added support for the nocode meta tag. - \ No newline at end of file diff --git a/jsdoc-toolkit/conf/sample.conf b/jsdoc-toolkit/conf/sample.conf deleted file mode 100644 index ad0f08e..0000000 --- a/jsdoc-toolkit/conf/sample.conf +++ /dev/null @@ -1,31 +0,0 @@ -/* - This is an example of one way you could set up a configuration file to more - conveniently define some commandline options. You might like to do this if - you frequently reuse the same options. Note that you don't need to define - every option in this file, you can combine a configuration file with - additional options on the commandline if your wish. - - You would include this configuration file by running JsDoc Toolkit like so: - java -jar jsrun.jar app/run.js -c=conf/sample.conf - -*/ - -{ - // source files to use - _: ['app/test/jsdoc_test.js'], - - // document all functions, even uncommented ones - a: true, - - // including those marked @private - p: true, - - // some extra variables I want to include - D: {generatedBy: "Michael Mathews", copyright: "2008"}, - - // use this directory as the output directory - d: "docs", - - // use this template - t: "templates/jsdoc" -} \ No newline at end of file diff --git a/jsdoc-toolkit/generate_iris_doc.bat b/jsdoc-toolkit/generate_iris_doc.bat deleted file mode 100644 index b1b7d97..0000000 --- a/jsdoc-toolkit/generate_iris_doc.bat +++ /dev/null @@ -1 +0,0 @@ -java -jar jsrun.jar app\run.js -D="noGlobal:true" -D="title:Iris" -t=templates\codeview-igz -p -v ..\js\iris-0.4.5.js \ No newline at end of file diff --git a/jsdoc-toolkit/java/build.xml b/jsdoc-toolkit/java/build.xml deleted file mode 100644 index bb845ce..0000000 --- a/jsdoc-toolkit/java/build.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/jsdoc-toolkit/java/build_1.4.xml b/jsdoc-toolkit/java/build_1.4.xml deleted file mode 100644 index ab408a4..0000000 --- a/jsdoc-toolkit/java/build_1.4.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/jsdoc-toolkit/java/classes/js.jar b/jsdoc-toolkit/java/classes/js.jar deleted file mode 100644 index 0352cb180c120868ddbc31b4f8e7319d2f26ea62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 819369 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�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%0D0}ve&kyVxrmLD3a%OoJGjT)4!e~>YoAf7U8CGl< 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

    jQEKzki`gN5I zeHCPails$ed`XhKb74ii(-S!GmDEwYn4fYWKs_d3i4!&$5Ttp zt{QN1Y6!3^q*(JHJU?i!x+|T>4v{1@SRRVIQRVm8}L@C@uDXnh`h|MR<5HH;u&i-|m6SCcS zhQpQGvSqcd}Deel=9hhY?+iS%`KbpYTOteP)?(rl`%s5%PdPLQbkx@Eua3mjai< zPx?hctRR+;6XL`&L6h`GF{z+dsFJ^wpJhb_ey5fst$={c@N9lL`#1Ncvjk)CnDyZ| z=P*XB8_+tU#Yf(>aAv@ro<+BX*Q|93{yg}cZwMRo75O!#7=F`D{lL8+M0Dsd5V@}+&Toaf@<~&-#R!qz9E4Zd%3wl9rq${A4x94g9Nl3y3^ks4Ibg@52dk178_5oqr0? zRXpH_upI!!=*KULAwMgh4T34OW)=8WvoMxhcu~SXss4_s3BA_|LO9Y2#_U9-x(w*- zg`@ML-@JZu$Y$?*+WP(Cimao+?6POJa*CFArOlaX7j(2X>fyqTFX(;?=tzvqN6V3Q zzXR^bOkL#d3cWsha=~9!re>e_<;z@u_3p@}FNS!P;_CA{73@jJ+ehOXvwdXX7mB-O ze#GdNiOZDIHYhjlTmWvM8H?c=Y4ZDh48TFplNSnsZXZ)JnMJIlDre~7ds@-5T%env zprE0G>j=F5Vreg~OD;(Q0OJ)O-T!%SM3f%)FnJNhd-phUc=WY`|7VihP{l0|@0mYWS zEybK-EB7nnCFnMpS$pXpwlHH_h`AkB@f@}zr-TL72UJj^1+<%1P~8xFIxtmAsCXNM z#cSA?iv750pK69rsa1Wc---2_OD3!S_u_!KsDAbaq*^$&H6w=+|l_oW<6*wAs zI-Ph>b+Ud{pqK;9n@MpT04RDzy73F4sFPE`@?|lD~6Bi?$cTomOb%+ zY=4}Qz&E2bFO1u&z^?1H?PlbmUpJr~(omLNX_ebqV=rs-l$}+(L?TBtQ&3~v{xz%H zdcJd@g80N15$+99{^UJcXyi%NJ3)OUQ(w>qc-cQ#TFjQX1DLxfH%@tb!oO#Fi{SUd z`Sx`m8FwUd`w)F5;PZX5_zrd!Qa`bLrtRljKM{Rqa~lrr*N8VSQG+;T51l(OrZJ7U zK8AT_P(~f;>m$9QsNlk};35~>bN`M64WaVLTpoElVxvcSz5Tvph(ql?K>By=2w{MP zSN}M)+y|CB-q}BTIke1g8tH?CoY8TKg@F33vB^UkJxcUDNGH~?Bd(f1%{r9yyI611 zHObspL&y@U_BR3NX-> zf?RJrNN}6bnc2qA#R60ZhF|UlH)2>5g&r`+-D07Z+1&%OUp5rEB@Y_NSh9()5_sYn z8X+E}zrnqoa93j03ma0LJb(#g^heY{5abUf4^`EAw)lZEY`|He zG6E5V)BZ>?7eV5JjF}24JHoLaO~lE@?F%L_#7thMx#Llk8BjLvDh{|>GmyZ-qw@%D zQf?kmJ6z%xJtW8ere53(mKie|DfL}w9NdzrdN8mt4)EllGX;H7?pnfi`5>oEM0Xiv zXQiX|j5M(Q0;#ScT1Iuj#;$7lyWk7<4x!Ebsa&NN(ssP0T-`F4V+KzxoWU``GITby z8Xxwe1g;;K*%R=7fClj(tKzR<&0^;Pyc6ivnS6ZDr#02Oc;^jK9deutqsVfrdt6_t z0TFn!V~FQPJj=q23^vW=(-fH0wLFgvV0+g|5+rxzY#N5`pOP#xExg>Es78vBi@@AD zk*M8#PHub;SkU{|Cd?Buop_#S8lO;cWCc1o=~!!(Lt0AD`>y|eBf=-)-*%$ozm$*< zBM~|x4CuQ&h0cjNe>wMSrH+mMJXT<+H~ja^Z7T?l3ictbH~m3h)6R`^wQKSSks>`t9eAD2P1HBws<9rYeLgDH z_h4;bJV8M@8nn#LkzxF(3>%!?yZ-_D^1&-#gWf$RrRbYvLHIYwQOWbLmH=5UZL&FH zpl7331s6}-udJp+E9>xNomuH9Su>NCnA>ZNUQ7yDlr@lJE_O4yo0_5N`GvLv8f9-> z>2871D;@HQhxz~khc-&8fs<Nrk7O6@lmQ zmiau_l6PXct`m(%(q)b!{pxvCX%w)e%fj&oYYy=Q1x#svOU%3<*iKIL&prDbWYLWJ zpjXl+_w2?pAN?P#1T=|8h{Xhv1sS4@A&qmbIY!FOJP9yfc}0d(wn6o{`_lfTyc^&3 z!$O~5t8z@hH8Nc8^l!lLbga6JJyBv>=4Zx?Nl*iHQDxTCe3i4*8RORbQlP(Z-3an- z2J!mxC`ro$RO&OE1gL~)VMy#up>Sba%w@p+TEJF@ltSmDa_9$M+<9LA9RR*oozi7A9BQucw&JF<0%|q4{I#_ajtj0MEv2K;^=W z9&sUOks<#T5msz?&l7E8_|5BpXP(*tg}|B}gmAI>Pw^EL=}QkcH28Z{s^3O&YA3h@ zdr0pV)1Jw;BcZ3x-2N}#@QA{`uQ3rkuQz6fdm{5lHPUnY2*5`NRxOC1TGEF1nEc+x zk}UmX#Cfc^-jEnN*lk0*9Q3Z76x1VbA#JIp0AI2te^N>Bw{4(hX~pnld9G^{x>&40 zi7E4I{EeVRXyUEdvVmmqDG&N~U#a(kaJ@z7zFuuRZpFo$<6T~CqEQLs!RXI}1i%^&rszmT=!7xGEi|~BX z|K{9O%GenkLOHj!p(K0c z7)WmkUqFOzL@vMu$Kf#J?bo0;4d*Xoa#Jv#P6v1cVa68m_CEL6zmbM^Z&T2wOy%lkML2q#L(uV6`j%*){q7D0c7 z%)_f)VmWeKB5WV69e?5Vxpk=N2(d>6S&PG?@M{AT^6AaFF%&Iq4giw zJrfd4p{zRNI}*bqPXC6o7gGR0;1gdTY8HgVA-msMIkKyVdvV0(-KjigQ)<2G%#WZ) zK>$(#N%p95cUSw6c8KyVVXjTEdZ#31-dNtThlzJAo_9D{lgo2)K(hrAIv{22@cGbH zip5hA5N`7O0b7XxgO?_5kDhGnX#wiQmx1w*yFM}}+-NxJCI{A_M!r zgQ+6)vp;V`usq`&?CbTb^}Ayb$Mhm9No>VqQ!hGebVq(l3*@`grY4>5lqZK*t*(KU z61}9Xo z5d~jDzhasTTcD?{QQDelOLP<40%d;-j|h63vTT$Hd0XvAy<%`%EnfaDU37Q6D<^hX zyd)Sc{eGP8N$bgj@sh@dO15-CZ$hD}bWv=NM3mz3kXq<|0M4mSK0?dVgUhdkBXwap z(tx0ckk~Tv&36@lUiMr-O;RtnvW_s5qZ!+XwLW!#AS^!Ir{;O7jnDR$#@yFOLEu-2 zeT@h2cZ~icBdRnPue1PwR87&#pj4(H@o5q%S#T;}j9`kXFyT@qX19)uowQl2)G!q$ zQd=_^rNUJ3LluF%%r&2dR`{FLJs~Y8J!VOEEi`^sH4v2O>`p0ow7==AtR)@>wfjzQ zr^u9<@PS}U9|GYBvDw~fsbJV=tK}g-hw1>q8}$yhOk17aum+3mA#p_Twd9ULLI_5s z|L1%WW93QhO{9-m?8)}o;5;mwDV!5vK+-5VK~Ox_lSJoCLEua&4p$K1!~mNrY>|Wm zr3qVDc;t`)=AAQDYT5wgL=~JBNfFv28Ovf?{AmSreBiPuA1AI>;3N)zM9i)7FaN~Q zgmSnSS#sKZ7KATK~7v#gv?Kq5`D-z*Z6~SD~0+mpOI!Xfo?ROP?|y;PxR{u zfJH^F&_h!^??e=nsBBTdlQD6q!lfox7}5}}HgSfM!c1_Ou0n6FSV&XKe2BA7a0QRcaz<5lz(_GVnN9 zh0+?sgiexLk~-ll77o(Gu++bXbdDac<#>{&Q`HnmN-tmA$H|$nqWZ7!7u0lKmtov% z(Ohxf2=6|w-}9l_9T=GkDVfS8;;a^Of!7f7HxOA@IOLPp&^Ktv1~N*`%S(T-*Hrv- zwhJ-;;Y*u)Ih2=1c z1@j2xO6Xm3v0B@V?VxY9YFFAZH3<9S-&#j+6ZU5KwU;}QorpZxZYO`E<K{iVfi z?u=?KEc8v7xXiAU>K8E(2lW;PoH{J8nAdhIRs;#qrRtj=*a1d@+S0sM#a957+kdc+`1l{Rn$fGD#;NisbF$LpQ0M58oPkH_61upbru6 zg*f%}NX#drj+{KotCCYQQ_dxxCP`koHe6sUP3Ym~e`MVnJ8eQifrF)z{1tv@21^vv+ETKRDWrtflEEfWFFo8|`2sxT{`fi}_n~=X4Ldtp0Q81h4_@K){;WkQb~S|`xEljFV}JLM?|%^a66|~9 zVBdAo07Qr2wdZ2+BLJ#HaiX6hL-L|sWcz{Pxe>4J;j5ybM3MR<^OPOLugT%;Mz5|o z=yxSNU8tk>x7zuSofy9K2c#YkVHDpO!?^_j?nr)XjRbbw$+75kx$TC=S&}do3olk0 zyrxEv)v*p^u@VEe!H-3jVD~sUp7MO3*Ca;UNAu`Qk)HtM(y646w9plkcMYj$&X6Q) zZV{=_F5M`n*sJyHwXAZ(t-33jNBOmrDw&Z}^fd2@dMCS|aI9!#%tVd&ti3eNRH*8z zVMAkgkc|=c7{|f9|03+2qB9GdZQ zT;aJkilD%OtRbj~1xmPj$yV?}&-GOf8F+Xl2 z$!=@}Dg&mR%e2)OoiKC5QDV7ye=Uc8!nV(??jFP|oCNV?e^K*Ujm-9_l9bZThbBEc z1xFx(uhSq@Wlo#PZXp@Dn8M1BS)Nz7xr`N-SDmjLX!`8W&(a*={A+3qx%s$KU$l)R zeH!*oZU%y@GX@qgnIukpphiHfS1&*0daE=Pa!DW~Jv^U*kE4xsA*D9244*kzW=nrK z53oU4yUq_f%R=8j2s}SHj!u^@fsBzAAF$PX&9GKQ#^q;u1dE}?m zKzRp$7o-N;dD!Z+>hMpcgZy{5XmTsnHLAt=Y=>^+S5=oy+$?j59(U}4CECqtTeOFp zFRFwVE^ah3zCj;`cRSQGCjQM{S?mk=b7XkfU3@I0*yWH43BoC7NU2!#Db^4x3BtuI zcWgM;iqURJEZRIb1ygx`=7keW^F<1ADqqP`33{8 z*b=(T%Fdj@7sRoT^}K900gFqt<1uKA|LwIIRUIj#5pT?TyOGQK8>jL%xk5aSvPa4Za|sSVW~l zELi>SHPW8k?fb+}p-u2SZHYA{@CuH0s2(i`Hk-)%Suwp9wC+}TnNsFXT5egSb(whz zG@e^JgB+max5V8qK(UU+zPioOf(0ks+NfPCbLs$VjmgAhAFCM^%b~g;-2=M^Vl#^E z#YNeVjlnm9>xae1H(rsedPJF7@`iAcE1S4@R& zn((N-Ce1q*LoFC!TW3Oy)uH^#knca0J^8Q9V#H5)!j3|YI|O5pE`__BYzZGIGs30{ zH3={F5l`z8+Fx$TKPURMZ1$J4glpJNbRY7b?ft;C~?Z57l1vn6BK*|#P z)0Bx9))I44eg$>KILc&A_GwE?&}x zEkOe`0uPa5UR&;v?YdntY;=GhSzpwzs+vEcEp6t-s?7Ys8$8o90^XsXzkj+y@9iHPSIaq8MbAMVbBq7#@DEc-yM?rT=Tq&x4gOku-*W|*t}ghuzm6Y^Yfv6Si`#b@$fLL{?*k(ruo@L1dpWTz4>I&>|cz z4XWi0tZ;7vDy$}?M%C#rgg=8|H|Fw#Oa3WT_Gj0qC8$h4#!dCEwM>iQ~6fj-i6XX&{&FE?-`puCU)xnPze4E%lKc!6rT3fW@WP z_uFX9@77YH_XA*jEwm|3!Hw@LNNVINMhfXY%Lg<`e2wf z@O;5kZHkyVL?!tpgQAJ&{e|tfKm^jVPB*^h0K}W`my2(m3mX4L~Y|D1}^Cb;{+347Jit#!>2D$Sf=<$91o}rZrn&?o+CdB|7IS3}C zps)?O9eL>jHVB*#6Ba^dSw^kFT4mDmNyJ~se5C(_Ij&R2k=YH)h zl3D9mgI^PkayZXKe9!wilc!Mvo&nguMnSu&IAgna;~>5I2!Dqiylm^WWX_f>jZJo) zZ2MflWX*7SJPZh|H~{_W6Goxt%@$_NK^|x{{)0Xs9f+ytf)U}xV9>D*uY#aDVUtUqLQPe0h`p-5^4db!hA4M!=9Tyw#6jW-PIa`$-9yI9V9Zm7gwK zb=gNY_h8#)vFb7Fl{pnBqYvJjm7}&&8S=o0KOEIa_H(IoS!hp8dcqo%XOVYHeyNH$ zV5tq5&kf(BZWv8>C&Pc#6xn6Tk53nRxG|@|}=> ztA#tlmQ?F3gDcQ!nofH!^C_ep{Gj*Q%C7lnt;fpKBpzb7n64-?mo5MrJT%?dqKmZX z18yVcC8g+ewx!Y=XM(0N*5xYljrz^XfWZFlrbzP;p%xd(~jN%R2^(Z-va%((;N~~tU z*=i$J=xb9T!R>@+(i1iI|ggJPoxRJ z%g9T|7BYmR2wL!~TRmOLhqE$tvj)SPduaQp_@!u-V1^z^1(X^6uccVgaBSg++IOE?Cs^5Y^4FmLp+-?Gg)p14keGjm%sDbt*vvQ+@KC?4);=zNY z^Ryamk)F>>QKQl(S0sxziU#|_?VHGtChNJQc~&36BrKF6FZMn z`)P{HZ-7;`U6tuv=I!arS5mg_gSEK$m7GxZZ` zC<~%qY>91+$~Vqp_U3&xvVV8tl01Wnr>1X_PTF+KY{#!`k!=LV)ZldFiRNT7MyRPt zdYbmP*BrPFXdFgdZ#|mbW?46*&PiO`1|kn~9U)JMI#;e-G4X78CaYS-d)Dqyq5rT|nFCpV zc7?J$-i@{_Y>ul+b`%M!_?kc0<2jESazEkmpj4rgmNYA!sG8L9zG~)%X$fWpm8df# zfmjOelOkoR-z_b#StczXM|-E@GI!m8$wb_4A*K;HegEF~B$Ur@q$`V&Pq=@b=y9#0 zc$eK(zE#c$Z5^haV_Z0{`y8{or|2=5*SJt`+m5TK7diC+aL8Gc=r`Z>fXXVyyQTxz z%qoz|v98Y8TipL@*z+f@I*T8pR)GBXda3_A%P2ZKILcbNxJtR2+5I2WCQSU877g&d zAg*Gvq+P6kUK|;9-oIK*We+2quPS!tuML@xCEDH9qkS8NqyI&@?|e>8oerD2bWAPm2q z?x_QZC{<7^d&DNz*>Y%9$ex0Rl|vt2uG>kti#Y|ui0vS;jM7Z!l;eKaCueAZCc0Fo zv~P1a{$MR6?SCeW0lVSG8P@ZvnWSN*@UvXM|1%O41(W~2(@2cw|HWqHvi}}(AHq%J zn~ktj^;Qxe>}9^Il`Y2>$3?*UaSwR2g~5BPGW`>bX_{l_l`vwJR78tLZ;o4MYMY)e zK^+>W#Y!#PGf?a_fYs87UZrh2^;|n(Mt@Hi1y8|8*H{q$5A46XOrw4=KL#8Ki1mk5 z>A%w$`QI*6F>!GGKc7Ld#+oy#1R7tp9T~Id0PH;mZs#beQF=TW3O1@O6VwJ49cW;c zi4~HGIH?#b$sfUc{4vDW6xAVi^a_+5VYO}&0hGiIKD)I9%;fQ4?{>d`n=Y-Xk0Y4| z{@{){I}%QKQNC?`VVN)uN?>)9VM9>xt*?%mh#qa1NmSfU9Fab+zanRDxpw^XcV+m0 z4?*hn!Q{FiHxUzxvBH7Bw3{jk1@476s_Rl~O}s~%F%2GTJV|(0oM)(8Z#NO*yj6BQ z7z#0#Vv}e!8eZ5p3w!5RwGHK&+isLiYIYo8Aq-3fUn_V+rrKjFYqc7$hd%n2D@&rw zD9BFCt9&eusZBOycIc1eiV*mFM_vNPy@%@b0EX-uG)Z?!VLOM?u2VOu<8XzLXXZmq zn(57N^!DcSO>!QQ#7HyITP0S2L%69!fK!*YE;9{_xZOi>mi^W;Eya$EQLmq2;?zw`;TM`hN1}#4qDAWCmUe`Eu>CyV)c7FgP*1fi7ZJzWI0&uzA(hZZZ*OJcr2{ zj1JGSHU;Wd*!%Of*KHg-xXBa6VUQMmw558;5MNT84SbjDp3FP%K*RARoXN0%y}yF? zL-m8;*vwnY#SPSbXvMrr=ekaaRT%#f((hQWB6P8SH=M<}oX=I2WoRWuk$h}(jwmsQ z81a+6G1c^%V)@#ft5)sjM`CrTbp{KeQ#vXS;T@}KQqk0@B`d1mHb=tXp)*vd8o~2X z(Gcw6qQ}*X%YD1os`2)<(&RX!%-rIOtN`Co4fGmWu2hIALwl;s5NE)_kT3a^Q#CxQ zhZ5k}Xbn^=Fho!hGu%plKT&T4Kx z`e3n@jA-o5Gg- z`JZrR!C6MXZsk0KsmLsMGe;pvB2L&SJ_qrtuxV_Bcx=R?n~mb}2cT?5I4@Sw`=PUt zFJB)X396}fJP8RUDQaXTlsANb2@%R0qe`G`KZ2acDeCW@I_U0Zvt11qX3m3Phy=Ki zPI}KyyfgPg#2W_x#UgW3AEu0O2?F+u*d-m?O*KVAt+9?+8Qeq9SfPfZX(@Wfd| z3bMr-SsP_Qt=EPzE_iQ?_(f41k-Q2jM6j5R1!#+pfyP==iD!a4DOc>8n32rXm?>+C z|G=kALJNusK-IBV`AA)%k3>QlA8nk3`kXXyA{aa3>g9MdNZe(kOjeu6mNT@nwsm zEm){gK6rm76E80n=u$B5Jim|IM7$bF@+n$etg+KIa@jM=Q@cQvUzTZ6PW z$#Cf&aWxQxRa>Z#+>-m%LWg|Cw8xlWV&r|3dJB~Be-k(S@9wir?P`(APZE~;Ny7hA zb))kC0rvi{>Ly`FdVmRSxW{(ue7)mr@y&t;Rjh>=qn2_TE~Fo8)bwQyj&;77^a`v? z)nF7Bx$_p-m+FoT)gi=6MqWPS;d6TB@ZjMJzZcpaUvrg;C`t}jhrI%BjZ6*hXd1rf z$bYmjVMitG(^1e+uI&-fK5H&I zo`#!cn}7GE6iA_`?^)>S2Z;$UwWgXb9>#e5s!#R4tvetN;~m)hZi8Fm3Wf9eO@M}7 z2^qt0?aG6(r4E4L3h=jWL&JtgjQWL1{WmX?Zpyy#9cG!=Tj+RgR2nVH{2~x2&ha*c zTzkpPmLfWh56qUsD4B(g1@dR0PkRwNsjH%8}$DjG=*19>$B@_Ve9J-(xw^UQ?hqcky zei#?q5R>T5ET`h%(4_)qMx(M~RWSgI6lX}cj>foegfq4}?jw_FPVYfojY3J1vTNf> zGOE(Wt9L>n$Jj@VQ984t)1YleIgL$pC7?^H{Xqm98dXv)VQMkSn^&a0#B2I1Xg>?> z<_UZl+)X7vWHsc>liDqMcEPD-$ZS9-Ne-)|TmS8m!Dw`mySq1SgiF%Q^Y}*dLLVuU zPjtg6k6UMg0JiFeHjpv|*#i@hV!+et` z*!B`a{c($OZ&N{NKCwKR#{Nf%eoHYUX$O;W?VP&*6-1<*d)>AOHLHlA|^KHp6lP!b-Z6(r*C|m&Ndp|wraC~__z*+7OhSir*_9H!`To<8|oZ!GE zKj>Ax4ti0~!stnz45!S3ge|G6DnYJ{)J6w!W@>kuN6WY;iKryd-pL zJap`mjF!EzJY8gJ?3X(XTd6W@TE-7wRjD~J8*Dk()OdzgRA{rdCN8LGTy^EM? zXyQHm)jDppm57gL0tcJkts}jqtBZ5<-p$n&oG6OKK1*jQCKe>+IaoLiuMX`@K3|L{ zD!9nU91LH&)K8jV-dvl6i%I*nVrD8!yXU_de%;4r4J#pVAXD99HNA=u=E*%pYbW;h zcWtJn;5=LY4hj}g6O=qISZFQnel^QL{gR{;V#8nd8kK+7Sc`VX^HzISx4Oo!>|C}5PQBuiSCR*tRZCMG40tEU2&W7WQvYp#Fwf@ED<**kf~hhEYR zj%72%a@9>TwTBDUw6?QuDNW`THBaE)x|wA(f=P5_`Y|}<4IFtedK9Op?T?bAtsL1P zxW1{kcb+9E!O^Vieg)K)vdtd2_+VDg)89CGVS;m84qHMLi&!Ax3BacivnwCNIny>8O;0jHf(36EBnSvGR)DpV79`E>GYxY&eM%FWu1j`UPi;=c$H%<*H= zoIMr(gI}ZxSqaV@miC+2WKh7BpH0mC=cHgcH(Np$Y^^}o?S2keecO{H<9y269X2fB zAh=eLFV1GggrCEVrF6^z=%5fDOLF2w4m(;rM`f=e!_*iV62{7PIbo72Jajt#%F+#x z#obCu+bvAFnHNU9Uv9M{YU2*#BhS%vU}_-4LPVwKZa(Z_Dgk6sF~B&g4RdsaEd`nW z@m>ifg>vnKa*;4C5)<~bgi_({bjRnPdFTERM=P<1A~jbj)M-V<&g~097QJtW{nY5X2EENx$YgT!hZYO0{K^@~1 zTVaO9o)oP9HuFzy&MzW}v_3GcqE8i#oYujVZBjlQ5>evsz;9p=#y_N(U{&s^d3m5m_^7jw%YnaO-Rrm{_4yW62jF?r68dF zo3{zMD=BetGp)#TA}Wl1kR33ntHZlU2>o0#YD`Lvafp(;=sKPls7a$PVbVQ;;mYNU zgZL*%lCH%+FPFufDra*tFJk!vb}YqCm?GcOn211{b*`T?+)Z#L^!5 zF;i4sJ!>yEQi>Pa$aZ5n1*{JIdQF(X^OSTD(JgA`Z17@#>< zpCmMJ>(iX0KpIDJm>4l2UZE*ea4sLtdekk*6dV7VqlF*Y#ymStJ+m8#fsY(X;g^3X z$h)2dRa2bgNEHc;f3A0PZIVZ}Vuac+(ulG%3MxkUkc%n*ysxNVL5eg|S6@t}5bYbE zOQJ)gTdVbg)?av8N!~}6SWMuZNQK<7M4oyxvDHS zE42LFL@n}!eSR^4g1&Yod0U?hQ<*rAgCFz}xiT6jX&-cknQG}nw@rZWhPPvX#b8V8 zBWG_*&WI{+2dODI#<8v$x#HiXkT;OFdd?)Bl;5#{2HmEinLqUdoip_m8Er1-Sj>eR zsS8L|#;$~?v@WbSwW~|jP*1#%g(m>~V|rFbuXWdRl(Q4Ay^dISY;w1>YwioKTYymL zErfCyWa~U#+vRcON(arf*yDnTq13LEWNwYgMyTCbHMVSIii>e$sfG7P*lF&Az0HER z4<=mO9dRs;aqIgFM-yfwcfQ|{wrhs_fn#6SXW__^qYeNS$wjcO!o?q(4)|v~DG`$k zZhK3;X%`$<_7;*Mp!`70_PgZR#QF>5MO!m2hCVR34VOg*OTPw?#EZ|!KuY1udxgj& z;S1bH(?-@fjuW{WvL`d^%1_NWtQ6IegBn|+PaE6l?(|1mkIToPoM!0NdQz>`YNhYnY2 zq=p|0@rel%D8rDhNf?*OaSoEmQo=hS@LF))E>A(iyFT!lXv-?EOVR`T)V^qjX_mj} z6M{RyH7-y;=usKek79lT?$NnuhGmvE{tFPOAMr>7>c>7W1lomjrVrW$aTXtVE#h4r zs2}FKDwrGm=naZ5|r+f^1^=LFq_=TV)pkR zeg(%q*qOxYaSZ=Gu~$HRKd~nOsA3GG7g&4jjLEa0_hkSv9M!uSCiZ@|qp+=Gp4H{s9ayLWvao#3&7bPzJE=noqj^8%^^ zzKa|T-&tPyF@+rjcI(35)PlSOYKm`+*+kMeuBMOv3T?nsP;S5|YQWA=%GwZTI%MD7|hr9O$k^I)E9;a$@80Z-2lNe28NT8V+Vcf;_Ax{y_4 zM7o3o^S;?3oi=;n$E}pyd^nbj6zx zR+}X>gVWj49yZ!R_+UtCfh(&AHdzEZa&{%CZsoK>l}jB4+`)^HxmC4bI$ssaX&veZ zxp$($teNRvgZRZH>yRB`NVSX2$BFgFJ&HrgVllV&y9XLl#Lj+fej4hrJ24*eQHfV?4ot`$+xLOM@N&IIq5C-)P;lzTN_(UI zdo&{c_2Y-;N1aqXmjQplYs<4BHo5)^;!hg7WCMpw{fX;SFg?~GV#(zq-P0;h+k&ES zPXZ3t;_jU!PT2L?)$g;31xkz)l!fdoxB|Mu5^Ti*I+76#b~M1SlT8 z4f7&A2W+7Y$Z@y{!+QqOTnol}<}rfvfvQ*?P@Hf#;@&WkB$qz}r`*|vn~-PYB~$($ zP$m}OAG0ZTj{_Yd4B_?mbjSM~Ou(qtXps;!`sXyl2Qzf(6g(gkN(CO-4%9Hquu2bB zh1RFimoiLd=W)4g_Zw;fy4xll`<`0$&T5ikrkCoOb#gTfu7RdV8(o+l!l$UpWhmCl zQIT!d3~luaK}p0zIZi~7DZCmOHqwva^A2QnHA->VKQ{FfJlcfODBp99s9Pw~A%6b_ zXYj(zFv|oH&4at~>;jKOvv$8WZ&yQU$3O_$2mZ+qpLWp!t_F`XG&a~zw+ve2OSSDD znVO%3PEVnKHo?jc8DX59xBs|A7S6#C;y0?uIlbzKUGg`=V*L&_T5THEIXDEwzda@5 zH*=*p^E2Y)nS<7l{WMeVo1lH-=^ZPN>p+1wJAKbOp(xjYEuIMEG)&_)Y(i@)wAO zA&o4CO9`lci-Z^u_5UX7XPi@)Fe1qq&96JK?LlKH6&&7`I%~WMk58A9rx}_;9CBwt zA2D7B_QIngApy1ah=6j2B0#hG?JCa6Nq-mcm(li1jS_H7E^k-1-uS5g5 zi46J3r(7#Jk*3)rN1{_k6byJARgiTZl3c({H;bi#52->Gi_nN0P|B2~^X0K)AZUZF z#<4i1sM8p#`)2uxU>psL`(mM&~j0-&{%khN9V3)O<8%7c81 zaio)R$`ptDIEyjPQ|vDT=2=L+bXwm^3W_^9 zrl?gRT+T=)d~pP3(J1Ut>L1hEO;{6ZFq>zQA(j?Q8lG&;+Yv<)+70+4(;=2%&#fR} zxW5E&f5{aq=)@p%Bl26}aFQG06e*;rlEBbdqr)({(8LMzz>@L%Q(TnS6-@M%dz^XD zxVtt%GzkPY*F>$dCBZ^`illziEAV*05R?gW;nJgq=$f$|Qg=Z)z(=bKpC0nN-g8Iy zG07?|57?5^WM_ws`~!uG5}ZlMJCXc1h4gH4Yj6t->|O4tRo_Io>?W$3(t;*XP2<$0 z3SuigZsq*kuO%JoZv6hI-ewQgoW9J0Uu`%RxegIEMKHCuzsTXfKhJM*Q<0! zi?^uV1U;Z?&KuRv(XL>ThZr}@quvoeVi?)-29H*%NtRCCef^=$K2r8>S8c`94_;}1 zG?>uYfFa(ZAltXA<~{)Ae*iWAg&8CZB^n%*(x^P|NM(<9$F`-}Aj z`K3XZ(`N)~UQgNE0Xr-ZU;jlh@Q&C11@Ea+<$&>zCv90_9sYn7;db0zcBU2E+OK9& zp=XuJ^yT+$YRCW?-Uh>;`1C#hEcEG(+gQyVYI*7*1Z34g$cf7k*@bT~qpe`I1AWk6 zCS>2K2F{Ut9=HE4XU|#k`Qp*njb4A(f7t?8OAGs;*mB&jfP$FmnM+;^C;!b?>~k)= z43<7Bg=kVku|qHL!z@1RCp;Yc8|xFggLILGKG4!ND;SUtd}{)A6CPb4PoU-rQ^bSE zup0Yf;!AtJ$}o$89364?I=}S~%|5vlJ|ixPBZ-vd2OM3MvZr-$ot1o6V3F|TqB)z( zL1o8VO@O@8^K$r9tMjJ~k8v>O;RoEX1++X~&>3aVdrUFfR|#&Y3=6-h;3D(?YijoN8@10V2Y1koMDxLTkpM zvxY~jXl9bm20F6FmsP|yEZ`oC2gU)1fmN>;h?rQ?^vunLLgRh(?d>U~dX#_*yp+20 zb13IFz`Nm%4QARF5|7=1I8sBvr|HXNv^R9nK=<>S^PM+BB55ot?;=78W}e4D^PHR#FJ{_VuVJ?Q?BLmsi>_>^=_?J15bs%0b|(7>RF7 zgBhyAvVB*R4G%D-4~2x^Y#!!q-*MDov>=7DMEVUx}!#^qW56{VBH(Xtzeg zs5mLekkX8psq0wFJNGWPR;<8Dt?(yP>oV}H(Rsn^Az!G!m-kZniual8#AhQwvmXRz z2@0+(#9-Tk;Od9b(j7(|J4Y{@QB%yQsaF8XQ3x?vQl zFyW9zE09H#?`!LqOrxfzYoxObc8)ix`sb+S3YA07)rUEP@>{IFo87YxP%#7-`EiqR z-NOj&H6v#5#ulK!tE6T)=_~z)<~pZs>oJ&8R(GC7r559tsW;aV)8dk*zSGZH->v0! z4zLJ*cx?g2>NSA;+AnYb|6-5$qJRBIJo~Bg?Fai?1N4(PXxcrw-4V~@J6Y)SuV&6F zL-4wx(sUk;w_K_aYFEY+w7DM$Lne2b!8J3;(_>=)88X&gQ7nf^B;Kw^tjiq-;%}Y1 zlSMN*+{N65As2w>G#PNCV(hO&X{=zt2YpsG0U-VzGQ3QJsJt5zcj?8b@f}$=&mU%E zac0-}$)!#86QoA<8)2owp#KRcIFpTaGhb_0o*q+w<$jmG8fbeda!s@k@Z>aH5;nd z7Ax9Dyq_86`zFqC!?uSohRB4IFdORo;LL{;^v3a_yCxSAm%r;OFbRUK-icOpPGEFK z%{zj%6d~OkQoaXxxJZJF9zkq9FGGo;>291&yURIgId3yxPWgKAa(qEM$yqY90B;Uu zoUl3OOs}Yu(PQpJEB3A}>bdVSy0M{!Z9+?{@98)C1?GO-w?=HX2xf*gJb2JpBT;Zq zA7&PIaL<6iYs#_A<~DcZTHfyv{$rnr^11k8^f5W3M*~SL&Gdd%NxxBuFOO0apmw<5 z$;Q6<2&cq%)DmGOw@NXDo61CNXokk-lAmIbk6P&<(@choYtFzwYsf7Pc&R*zb3r1} z&$CW3B}}v$0*Hu0u1F2NV~U81$-(G<3671WGQwuwPV2#6b;D=IUU}h3hXFI@c&+=5 z;8oxM&%Asg92v(H4G2i)XITC}OjlH$jqF{_9h~j{e+|xNEojf=r6vB84fB5}6vUvu zbRY@jWI`}hqjk{8OyN)s)EKAna7>AlgXz%7+SM@ch0A)Xio`AFnl{bVNQ&Bm)qTp< z>(35bXC>9k(i)X1?0z$!-O$h=`JcJpdt+NSTqimIwq3RzIB#o9pONMy<-x3w`Ou3( zn|LI5if^RqB|3ckniwT9_|OGUtf+Gm_O-Nb{RsIm$uhNz8x7P22#cUT1tUR~4f_y5 z7qj(m=c4An6VMpJ&&<5ZMFmQ7LrzN{dz3#WB?QviHN-}33U1s8yO8sMAI;;p3tEFM z@ssxqB=2OX{mC5GTJbq9iW@U>2M|IKsP+7vCOdyE#S&7O!vULCR_DvzGNa5v zfQr|;mpp$TyGR} znAC%MHjq*ooC{pVDOI&I=$COETYAmCATC^)T2*!3L@CM?bl|4@LUoe{>VztADj<^I zoecW9dbG#s*mxLjO!zbGB}p}J`WEYE@NEN%B&?)4u3bSnv=-KS73OTNW(zi5^s`G} z6)=Zr4-LK2e!S2}LYSOUC~Io7nvFC{kRs6`ASv7N{ZiE#!>;0oI%l3G^#})F>zoJx zo&H$#2v-OZh+ES6L;jOuoCUW1Gk~kF9LdrjmDaUk>=QzW84-mbAFZQP6n?gHbh&__vm{;Tzq8MAv*e}Sz!tKdhh zZAyoc6Zh5LK)1hkwqCy<%+l8uleKw6`&~Qp8Pr_{H{&^W`3NyD7f|3>&oV~wnKVI>~cqlnz$%jn>7w} z*-6hAv%lyS?Nf!Prcl?ijLABYGp4~W?jk5~v18{2i0 zH5|!nK2BHd9~}9oN-);#AE3VQ76NL7%cn@o$3_Zm38qRnd;wXe(NtIyDePO3K{JQS znKeoEPI%2;oo!wq3Qb-p+DvRTL#CNC{oFbIDt6w&j~WqWjZR4G;yQL63X$d=JI7We z)*VoK{j5ctBjVFJRuApG6UPspEmJ2^jG!@6=@$1q>;}CLw~DcMB(^y-sK8~@ z3Zuv1owLVczWH&C4Sik=EpHDb7SN2%Uf93;jf+b(QKo9S>C3XT2cimT5%;IfvkI`WQE0jMMg*r_o_XPwONLb**qr?Q z(9&FBi7=B1bu9$Mr`z(+y_`06g3{A`T~fuuDqj(-NLEyk^>mpyLL`P_l|zpIs;GKz zOs=Bs!GVv#jt`eyvnY-ttm54{^TT64fjPNd5?oyrUv-qGWMu@}MR~fjN?RJl1;d%e zROPt2!y#1G^b>Kf{(~HMU>@nDh8a+|Sb5~442@oci_^F?cA3?Lgxgr9tyhsCRWE@G5kQKa80lfByoAGm}6Mj_weG$Lzd`@0o{m3=VCsqC|CI)Z|4Fpr;jZ%`lljHaxhiZ__~$_N@uJBSv$!!C zN|{GI5k1wZe!yl(Y;&G0mLNm34O?POS=Ne}(Ake*y0Iw`=YdD)JW>mk&()U1ez+;B zk9Nc+?r*mkEF6|uHa_3sx7()qys-NviX0iz$QAvoXgGok$qmj>(T48e)q`BVhqE-& zRKXD55Rw-t+VH5q_BwK?r&bFKbAIS`s-oNz9U$N0et{mnBf#``D7Mw4!_Yh@Yzc#B zj#(Uz&QhvBZtb(_l+|?>6cpUZpSuqps~AEmv4vVvJmo!8h|>X#*M% z#{JB29tPju(uyx|lZS$ZU*T%lin{uPm_Hgf9)&m38hn9wifqReV+>W?hb{vq=tg7v zu&ENilJL{?%5uFk`CTi}n@Jet)c2t1@PT(3SC|vrfoq-cB=W(wcYZDCm#$Ge^b;8L z!+JdKJW^V(t!HAN^na5cPK)_*EUy%9UtVqOpZ!%Bo@h-nh+QF!3Gnpkb;k*}pZ09@ z8}Aa(1?e=jBi&)3(JM;*x71I$$nNpAXxR(hgfn#nLA0*rE=b?4zE1zkGU|@Jm2H)o zkOgP+8439!joX3_S$E<(pUcFa;8KiXb>iNT@F4D$LuHhCfLt6Fe&Bi+!*CL-cP@ao zVzUe%H5%+DpSFk)n1P6d#4?_?nbh5LnjNMz+>KOAH4LZO^ReY(OexS^N0&vk+;j@ zi`F7sT_mrx+sE$l>QmEXlQk=k0~`*4m-Xhtg2i7++B-pu=i@op`!J2)T{A!)jrR0! z<3_5J=to#X{JFoVP;U>6AZW#M47s!y*DnrluDR6^GbYk_&2mL9Wt?p;NPe3pStS>S zqg@APi{5TU)OWAM9EQiA63EwxfFW5PHU=a2-RR(qi(cvaPun@G^Eyi_8$~HSQZ9h+ zaW9l(;r1Z3n>p}aQjpp{zdoEl<3KM8um5Ho*>fI(l1Ls+l~w^GER0yb`6?r=`~0gVlf;lTN)MtlYvik4Y2E(=<4vzkzf6VC(>@7I|XS*xQE#~X8}9GsbEeCLr%yK7CS zw!C!nj>hxAoTD67{QA-+3Je9S{PN6vvhdGvfEQ%4B&|S{;mI2>Z(X{+`^TPg8<9jc zN(*ohUmcW>VL24_m8aBR!bTa?!e^%09>rZ~v_`Y^i?)?~Gz1`uI_XfXX}n(a$yCD> zSpPw@*oGP6!#E9_9~HFD=nqaVO>13oI!UaS=!wae18ibJt-&6bZ1@yf#W)b7?F z{UGRaFwk4io6{uft8`@>aw|qL-#FqKMv397e3Zje{n3-pgfU3sG(@pwet0e?g5o}T z7R_crcZg&cveLV`=;_s?m^a4aKBOynm!v_-%Bl1_ILWia8P2x+%EQYkgnwZ7Pd}Ib zgJx?S@{Iipe`}g>mf{O{Ym9J#Z&Uom8e^+8)Upzz#4bZ*YTa<$>fp?%Ih_E_xxvqt~@_MMr*=3nf1~i-KGVF$Lq)F>)Dw{mD3Y%>aGgJ!j(tXQ#U`Bu6&IJ zop%y%9Rq2|C$LXphdhI`i&MQ%=Xb>&!LUc%)3|s1M~hGX_oy$m_rG6AenFcLh<=oQ z6*u_%@ws}`%59Ntc&rvu>P)R;J=oVL*i#wILj zSSsylN>j1SQU7or+H&jTA#r5d7Bz>0V=BGMoLJMaTkj-IXyaH2_E@7wJfrJ_M{s=J zWK9I(SP>i-Jwr!uYwy7hh!lPyJfIcE%&-UZPSG7=9}Du2&>dJe23cg7yy>!zpJXn0 z#&RW{WVm>BbL9#+=ugT_9(68O9he>C#HO#fRD02mO#Sr=edDZU(cv`e9<7|x;I!)Q zqkh2Gx9Og_m=w4@IyQKNc~I$|pMRy9IIgU|?%Y1_ThZ+DDpVU^(F%Tps7&lJ&YtGb zK6s_LpzB`C=xfz1PS&wvGAl<8|3dNH!eNRALi!8WW(Q*AkBsL|uT4z! zE^hc5bqL9TUu7p;3Ez3-Otgk5`wW>;k0}`mv|vyoyh{y6FfY0lK!q<`6af=Z?yrBL zbh`^rg3b8>q8I#PVv|WMqUnU>$(>R&R0ZFpC;Ls>0_5^wlzutt98d%L@(4N;cIrJ> z*#l?{R|9{SP?hHB4FVAXmH3QY1*sa+wR?ZqRh7oQ^$acj+5B{x0j|0pcO>1H;18`UbD1(nQyhSGS$%|*!4ndbscQkew49wn`6W@ZOr|{ zy+IUBV16$tU_$^}Gs18QrTG4;soKV9hu6wz%C(1f5-&ytLuir^PsC5H&2`Zk&MI2O ztbAOqd&-Mp_o6Xf#eRI7?#;XMUDL5#@W}B}d2FR8b9z`~smW5YIJ%t1tZi)4{ZjpX zw!ZHc=Dy*^8K$34+wz@116fU#5>9`0ikw1!9n-BVxenH>WVAknkmv#ac2qJ4bCm2g zo8tzpWuD40v>$`pB7vU*51J=bL78nqqdX2(`JMqXGa~|Dn0DY5iI0k;KgVk?KgWMm z@b^9gcWbCQy|Wz{x*1=n4u;s3u8s#KS_?U1?uu}uS@qfdOu)p#EmtvE z6>6|V(@Q83O!3~sL-%tSBX3US5cRpu)Ki`G7h?dR%~sc|O+91$ZRDxKkEC`zy9*|A zeT!M~vf#mt;qr`ozb4*!8E>u(BPgtmqPI5J35T--hZ8jlHcx013GEx)#m*u;rr65@ zdk+?!8Cmz)m3f_2;;3d}a5msX40M>V%em&@JJnmrlXEk;B>w~9?G>5^%qn~rwwbYY z*6M>SX1_EbVe40JkBp2Uh58-A_`QBd^vj&LKj4R~Bv_PJ0`cD8J0!QX%Qs;AFzqbu z1Ey<4pd{{%67P`E<%D^)&v)$0y^n9e&Pndw4e=i6q<{E5((m!#^WooBVz0I9R9~W*leyLl zZ@KHfUuiAL8%=6BR@5=gRV7vzY$6+jH#Qr;WPAi4tafHU);*d6o{KORbCztcO0@%@ zOVrCgwJ%D#YSAkNow2OWK#`cC&x}HrVmuiP3WY<~D^G!?L?o>o=7JMRIHmnmi5QE} zK9P+uA|UuPMY+7O^4-wmN@^>MG^SuT1*hfmJmMr@A@Fso4%a@ouhj2_*OhT(cH)`o zLz6wD=I>xWC8ZFg+s4B7frhtob5Sh4`=Z-b-L6Lf3`7C*dE~^}X?Y z{BG|#XDUE_D{RoA#k~bHe6Af1Os~DVK|h7w;i*litE>85d#z{j z!-wp5FpI}Yc`2eb#pF5m-q<;R#Yvxwf`^)EoXd7KcC$*HiyvxzKM}MMYG*~NoZB*_ zs#D8bls5@yu~U9~pK3a1m@QIjELJ3_CNWy+MSG}Qm%Jt+#Odn&{R_qg-O7Sztt?>r z7Zzs?afLk*w<;3c60O#T(_0Q_wzpgH@+r!)#ZINeyWlra`ht8^N8$xV8IUuR)~2A1 z(t-F`xF0v@7u^4`8%zCo!9NM+fk}Vt#uYz{`G4}HIthw7+Zs7p*x8D@8JXDs$IXA5 zRFf3Or9cD`E2mKQhX!7Lce*Rb!R{#{kuv2567mD%Q)CcDTbm}YY9a{?5zItT^ac>@ z9KQhdZmIIR-zsgY>Z)*jGI@GJ)J7~~hijA@wuPe!u_(%oo0sb3SG94UBA+BGTx%q_ zS$rsnl~L;pc=KmZicJTO{bgSxKn~B)78WWq8V;X1u_^#Rbt>E_!WFG-d}BY*7~P%l z9fv!3u0`&CO2gRnNiIFfZ#l|v+f7RdgsnEEZW$*2lIdS{6GBn&&_RMus><4R;*vY z$o~I({!>mb=-^=B{$KuX4R@zZRkZJ}iS$upIt$6;jClG)<9OsX;vja=4lszhWEZL0 zAGSsU!)fBE4EMb(hpPy>D41Xnv5+S0pCtcAFlf~0eV2`Bd_HRN&;Ekp{j1pm@u;5n zZVr9&dDQv)&6b{b&*!fzZ@ags@9qa`zoHjI(5ludbf^vby=cU%$bT{G#MWNF2OvZ@ z$o7PZ`Dq*YiT7-go>p>ALk8ZL~0RZL~ls5k#C(qb9$MOa^Q9yiFgZUR2pH@ zoLpw;QCVI$9!H&_&#;5untljzlE<07PR+&;)i28Or{dolz6!ni6S&P>6lI9CYp0cb z6GJXRM_&hTf1S&+%BnJ&E4S06Z1t}TqJW{L@;f)=hhUQjmJ8Idwc&s9t zKM-RQk9t?wvwY0ti%S`O3H32AvBn9ej2lkz6_s$Qjfe1N>)RD12=cS-i&L4!3yLot z%-PX|()Ql!0LQUc#Xv%$>yj3ZFFf)75+*BY4G67SmLwF>Ytce9A!ghPgb6s!7ApFR zrju6^*?f}Ca2FU9_ExsZxH!}8>9VqRbrvFt6SZ0j@JY~MJmO&8A6H$_&Z|zdlF90? z!#3}xLHFFIpeH!fG0NP;pZi67*^Z?|68at*7l)Am%i2FNhtDX0Ka^G_FatXWO#l=3 zaj`}qoC}>gmD=Uv;dx;!fHGm$hi5`v)#n868mdQ-a%negdC5;2xqgW zWe`jx0<*hOs4SUT=Yc|17XJKF`DnuV63*lv5pU8UVsyjg*KU2d`yzFG8#NrVY#m1` zYG1T_MyEF{41^?|4D0(0~+Dg~&sAE3&sDZ^*QGo&FNMfh**+H~^R; z?Xw&UZIBWZ-m%=ftvGQMetp3int^hm`TH!IXWdn2Zj&C5A>55BeBMpdz+jNbDKaTj zmL#2WFkD$DNFDVkI|Ib2^+?uJF;qAt#{`>stSnQ&u4#WoXYT4?efX|F4XJvOt5O$2 z4YEcIAa>y`G4-v5svkSl0YKsS7Ql*I&AT{E?51T7*-YfF*vQ&Y`CI4>eXdoUzBkl4 z&v0CmifnvS)G+8sns7P)5zno1&};7K9i8{Vc}r@l!7h9y(|$@csgcClRBX0u5pBXr zd&Cx%(##gGG#PexjByp57!2hx%S{ovR=gqd~KF z5XN@mI3gbnS~qmZ%gG4p9OJ&ZS`a~CD8HJ8QFCfAV}(9OKUkY|Mx#g6P&S1|wrwo2 ztJrv>uCX;4AlH^&g`X_71s0~PFnvb1tN`wOY@#8JhmrOrVh`{rORdT6 zFfw9$&!RiA!Gt#TCg=BL;u)kgqJbYvi3_9$4=LXxP2`(L`7@s2hyYMe4farbxa?V% zZ1P?@)|CCy-a({UD>{hjt<}w~I~42ye^~qcjU7+WKP;vp5XdgSTorHip-S;t^z#U9 zgaRfc^%BJP#S(JzZ|1+rsgImzM!UmEaszTH4_2swWkw@X2#$5K+@@~mPErg}FK5JpCD@9FHF3TS6w8W^olOi39=9GvrglC)~!O-J_ z?G~j}+KuKs>kG_6IFWnA7qeRHo1eT@cw!X`)fCr;7C!#>4v+zCd$pJA&4gE5pEDJ#NyWnSXKKAJu!;vm9_Fc zA&uLFRdM6)mnPd8~Cz4sId1`m>%J=t({abzZ- zit9o}JEOv_B0=4;Sxwes7vLL5pAhkfBK(;m*r0JJnt%IkBI<4#5Dy^M5t1m_rH{YR zH?&yNY9XEWk^8K5?o<~TmDRdhbkhz zg&O3EX%vW$L85>gu-FdBf-jp2PpkDV;_wjX&GaeUAjn5_f_txowBDAa&f!=8QLk9# z_apbVUiC3^_e5j6;8se?^RQD*2)4(}ILI-`6cOg=p<&hT3-8dNQB;t|N92Vu1USeMP@ADTCt{M3Q-BHO6mHtn$~6q_ zed(%FsVnc4g-5b%8>b8UyuWOs3HWm-IA^27S3aDpW%vqje24OgAbW{m?!t?jQ2q&) zfD(V%gCaO^|KgbNsVzao*m4|9g+>|lMM zGVGh_+;VpZ>Dv!6aNW^-0QC$B+~9m*^gJ@7$X>RY&Pk^vkn4iqFkF%n0C?N^C??pD_S*>UuMB)3jPEvyH{DXP(3 z(sCHW%xO-SqcLVV%}33x{wqgg&2pO2E^LTXr7`9{O+TDlJ20=N6fc6kM{@+EEi7ODSEn;z(i@AEa9`r=`3yygE$Sf1-SN%Ccx`0lSTMV6nd zoi4-Xt@&_M1iQggjUcGt{>TiorB={;?!0Zk74yTVgBS~a#`SK2TAw;Q82J}9IzBna z(1PvWM&>mSpI4y9mM6znAldXMIz5PUJg6KE&$1b!c(8MnG{ngxt!#39p}=dt^$+-j z=nN^Op5XcK{Bc+0hK};9Uu+l#Xu<*Y)b+{tIs292D)MtDXmBQhW$f+20QFN%eNg`C7L_3>5RH+ZtA?W6DRdT zLPc&NO29%rD#fC^cSl;`|9(4U|Mon0Oz^=k$10_F<~wke7RcwyK8m-?xZa)h2sm)CX43; zGewd(zN1bfQ9UkMO~a^OH2`Lbc2q$#TlQw|S5Yg|g+;Sq`B2WLQLvP!|G2N^%mx=P zBBdLEccx{$D2BRVYLm#1Z%dE;s*z+=VhjMIRa4?yD;sblR-=T zJ#XYzJ3KJ8H=imDk|pp=x~4^G$fTCeE#Jo-_7Xgw+7cD>1~a7su#N3?5EdPvUjm#t zl$ACOomxYXRXGd5V^+aDSYJ6{U#@E%<@5osYRZ0kDckLT1h7o%w^o_VQt4>$3CO~Q zyx>;P-V0b~H$=RUYv|k-X4zyn>e_rIv`PpV_^M~Yik;LbE|l{idxFL3EGAuKU!cMa!y3H30(HuzEUOz;E< zP@_yV(^J5i!@I`2+_L+=LY!Qe7g!JoVnDW!MDFc)HRX`<_`xg+B3lbUxvYTr5+R)W z=V$}@v_bfAZ5y|k--JQm2qs_my|4IIEPZ_acXAa;8Jk<_57&ts;@2;x|8bmBv6HlQ zk~Od={XvR27&zHE{MQ7lD(kqeg34EKGMvbK(@fNbWfT$Je$eCf9IQZryrM4 zOZ9oSgQ278w27P7>buyG&R9v1nk-tl;cJw~f4u2TL~Jz-bytdY8=IvQZYaT`-}sF%aTf8gXR5 z$_XoXn(p`)={T_c4Wb{HKcmH4WH48OY}#qdYTmL*5TtqCri=i>X1(45WlNdnY8&_r zF_*46`=9v=%0fz$I;ousJS;hB%gm=Zg9!!KICG@Xa)SE^D|wtxCH z12+9x+%HI)>tohik58-Df?lk7F4&mhC)wFcaQ4f035)*%W;xM3v{AUuq@vKI#oWqjc9h@Lm1%S5g?z=fWA zw0=)HSXOf<<_4F#E|DgmcRPAnWgd;~CAE1qrXt2cC|9&2+ldySTf7N2{`E_C(?9)- z3}}38{MB1f3`I;nO{rEFnXrr?k5BvyrtTX*Kq#p)(G*7csLRH9Aw;OerhKTMtl|zr zjCwlnTSQ;aY*7{5+8IH2yUO?LEQuo;c$s1J2>(&bFd=0%`Ca9nMrH?S(Osg-#?mVX zUv6#&$|ISH+)6{rl2I|tsuc%8vMy%Tj`AZi(oi+~Lh%_X^#H&_2M?aJr_&6qkxj#5$UKb@w7h8l4)C>ecH;1OBaT&gu$_2@d)rA5bF_+;+%wBb4R zir;hn?0wuJ@bPl_{7WasH9*5pTnN`kAW(}JyU*wa)PQofDapoL6|79e8(_A0lZl;;unX2% z8l1AgXt`?w<4X$Jn3O5hp2z@s(X2B?RXJH4AzDINO2-`}!`(4R^>bQ8N!{y&j{H z4Zk{Vkz*0v=|!y3$KI%~_s8y#`ZC~_{i_A4l1FP@o1@9${o-l!bl1s|J!^e&qs_5p zUb$U#XL}zv_knAjzQr7#CQqk&O-yp=k57(pKQM1SyFen1qGxxBnK|SBgU7U(e9wGC zNO;Q|Br~OfGkFSC5oq^IlXj_%P4_a=g!S}6W^~@)EI9*Z53?o3=0ndDopk!URnJp~ zN3&8dfM<7Yg*%}yW5Q%{MpD{fwvcIU;l)Ox-FVWK6auyUo{dxxpT%YtmdWe{5H@4% zRJANZu_tp8NF$xF0`uU~U%^L_j^;aSCdZjsgopX%oZ=<>kA%?DD*mzK*73ZX_VEh~ zW#S9H5(d6R=KvuM<~BXEp4{{jt!K0FA{pCdG*-&b0Ack+S%@eD^-{_2Od+|O*YVLd zYfg(d8!*de2jSHV@WT*Id+@vdDYQt%HII6^bitY_uJ_{BRotE@Wl)pb1E8~JG=ySM z+6dp``?2_<9K{0BS`KrEko{%7j_V8iHfUBXG47?5qH_SR}~+N*&QKjDi2w5Rh63a6bKJiUk||gw%$DZ zwe-n1mFr(aaSTjYjc1g{?OfsthK!?n3J7CF1N*B562Ip&CfCa!A zM{K#l!zlp_4gG|*G{VVoge{js&#m=X0D}8wJ5_TIOGD>w0Yfqz8$&J^wE%c4n@sVF zsH~GZCO;mVgCrXa>&~#kDDM^PeY(o#o8~Cjg^Yg8x?9~!G}^cCC?d;*T-Q?`3db3; z&CJndo2GKPw1FAKbYS?#)_FK8(aV+qiT5ZAs-;SN+X>VT#=ph;Lx6DHX8 zKAMr$%<&7ny(&Shyy(fxOP=P9rS7(*DZMh|Lx zRY*gA^j+*JjC;B2zGHtxswEbGA91Z~FNj1ZtuC7W{F5@aqTk z7)BBvuKL|1bT`UZI@CFE`P2y?2LSdKqcHz3NoyL*`eu-7tLQVd46}S+O56POHdz?V z4O^z)Bl*WOtH!5k^Pt45(R;x(5$9gQY}hub;qf1tveFXH9ckVVPtRY;OSO|&EAXtvDPmnXH2Bdo^wp0O3IFpfVyILW@KKHD0aRb?0i z6*rb*s}<{YODJ;}P)v!jry)6|oYsj5+ke%r?J4M#ZYHfdAQ>$W~tzuSrIt};V2XX zN}yJ#fWNK5{>|1mmzKy*uCe}O`_R4y>IAyX1_P@uO$O|ep*OzdXM@caGY$TQ7T8qi z5u(v68er18#oo>$Kc6<2MsL3xOQwCGEi>NrbWVB`rn>ZMbPWH~ z@L27*;E^3qAIom1_M)r4q^ADV5uNAw37`1+rMq!?>OC-z^W3E1IJ3eGH%d{USaK1X9pprIMH2Pdb^J$ex`$vkm0*51hmq2E=-)Tj;%6fUDmy!EIJaJk`A= zYxlRvhi~tzfVxEWBPqnoGZ?zN`W?Ld-8*lIy>U@jL{j7nx!6bLkU*LPgCN9T{d%R3aL!Mh`-5fB&u#ab4~XmN zZ{w|M*Hs?mIC6Rif0LJy+pv>*Ok zeiKZTxvw4d6KeUnQ3!VQOAo8sHX;q4Qi286r@%z0j z)n@*nx0Yv;<(JMSb7>Wjp2AJk{^`(t>Lzj)Ux@%(h3<%}*mYjvH?nz8DSp(aB#R+y zcc_PGN-frtD~D)KuS_>jOxtiThLJ(B_FQ-nUDLO0U;>anGv-qW$fm*h2$>K=AMPMq zP9n!Gi~QC=3}uZabP#+o^?-3%-5=>+4Wyx^fj3-bVnWumDOe|oTGokNt?Ebl>U}F@ za4R&5xQUqfv0!cr=zEDe0mr1(NEamV<5*EXhQ`coOIDzC#OXr84ZjpSf+X?H;8$PJ zpUhRvcCD~~I(+!cBm8sl#tn?wSVFDR5E$GB3#6L<;lD+=(~mUmo`!m2;^0f{Yhbg7 z7GuF=B$#U%_%i?Ith%b@0y`cI({FDWqK_&RBrV7)e_8#qO~!A5btooQ8FECMN2rGl z)``*5jDB?hK_7+of!_#4iyx46V6jcno}s5(A*H&AWg8i(q8z)#?zns)p86V_T`7a7 zDX8lRgOido5+@j!fK9Q>FhCFm@#I6b!h*mUe4QXbg9$i)9VMorXw84|P;+-jg3-xU zqrleqGgaq?1^2lPmnCeEs;@rSdva_pFfJGBgEMAlbO$=UT|{`+dc~K|@!82O^McY{ z6&T+78gIJ78J&FIcXX$!Hh?|sj3k|sIw*|=+R#CTB_UF2zXN<0F9_#tZ?R&1hRZ}Q zCZm>tP*OfA_Xe&h{?wc&wp1X;zC&$6v6p3@+yQ8C+ErT(R9lUFtOvt$KxiK667iyMtW^UA1_cvPLE;Rzoom==H zSR_OT4Mv+rRU446k92K?snxqNSZScSUhhSd50wNsSCsDW*9Ip#d11maG^?H&%|)rG z`gc^E9((C3l`E;ziw^_D;`l5Aqa@o)HcSnYu$YDc69wI9Oq%e-*pf8G71D6}r)P!( zL&W60X1XzCX+RT^ztZqiWukH!u)>1^Hh2I1pyS)eDqmO)Dfpq^8nuNI)#g?!2b zY6RHAO{zZ~(TXa4mgO40H5YE?vQo?=nIDYM(uz?#G*4`!+`~?a^{uJj@eg%DRwpmk zh2@Nq;(^o}agQXkGck=t*QNDPYn8%J;ti~mKU?+TbG6|M#Xb29h|SiXR&A zlE>`O+)?Vq4KtC;@6f$cZ>3P&=HU(_9Fl&?$?XyxVtqvLhJ43k+|+eaHg}RbTW^rN zH^g`8^-S&ZyFf=D$;Q=9ns322m?XWVL~7KFI1m%Annk>Kso@ItL`JOgc-O zy7TEsSW;3|cf@$FOe=1N*x8E$s0VW=)Gb!_r0Xg=w_pkd_6UakL-mjKHYFBCj0Sx1 zf=99k4c+mi58!B%97Ud3wFWMu)D_-&YrdaQ z!Vb3}lG`6CXf(q4js-o?jLl+~^t|KjKD``6@B2Rt7rJW)UY#!2<@B)|86FO7HzC_I zCCCgDf+&vA@m*L9d>>G;-AT*o#ZBesWJDrs%cLR>nNuR_ zuWo7L?NngE_GC-xVHV zXhzTcA7y9xXZ;Tc<_ZQ5jwTNO4?6i8`URNCf6>Vi!Q>H*N~xIQ3fphY>3RJ^kd@nA z`C0lyp1+UZJwPbqSQvv7WAQgPrJH8Okm>_&1Yb?)@c%cSe68$gZweOc2Twj&b5-_( zCqMkblP}%SxBcIE^1~lI`QE#7m9cQ@SJe-myfDP}O)-?dm+%X;-)$H$Kca9RK8x^w zy8<4=!QAct!-??&eq;In%UJ*QkpFr4?^cYsNhuH})S&6CugJ)%Dm1IArRE(WFuV@b zL0Q#O)Z3Q#M(`*Z7G@T-TW2p|b$^)64mAA|H?v|Gq`FoKTZg->4B}3uG(_`r zS{}0EFWtufY&*7+HeCr4_aWcKHlTWr%hvxzM~w@7tdl2064KU0GO;)J&kTK%=kcSH zX_#I8J0Ar>3(ko|U>9Nqfk_}Q4}A0`BTEz>atZ9Nmxth1@P56l*Y6e{OFMlk;lw!TNDdw=3^Woj*+6oSu5M&p zygfOH89F&z9@;jd7XIQc<4AWy{TJ-Y)*zVX4&}c=qwS>_zvd-={gO%e9|`*Z`R4vp zi)iA5a8ngsG8^l1y&5O!Bn5RN%}ZhB7J-y4PXvvHM~5AS0ae-|%cFFu`_oG=7^lJb z1eWBNZwTgTcfO{!tXF$}M*Yp@IPM80xbgV@$$vGG#p8H1kv4Cp=XLh{jt}bhb!VP| zcE<&TIdBZVqQW1ecRX+OcQ6LZZ}b@KrS7BkS2Hfb4$LdmgO&&$`fNd}Sn>=>{6Fbe zLl4?K9}`x?vcVLvTsVf3YP5w4rC%V3zaZchLa04x5pK|Usr^7^tl0Q0&C|68)#pZ3 zSsmCGmoz>Gem(3^%#Lf7XUQ}v12bmkNHxvV`gr_u$a2mUY+`}h&{WYDZ)zwz=Ry}q z`I9Y9cTVTiJ;(t04^fAvTVFz$q5cK@%$%`wN!zLswEY`1ccM4!*0BVGwj*#$P60 z2;QEd;CwOx_<7CZXudMH!)V*m%GU)k@(S+>4{lPoC1qY>w`OR*(fs`K1HOOXx-tKq z+U5_#J+#K*YeQX0Ke(mg*HC^@!+FTwE<;V>JiK)5*(vP{0N)V%O5e7e9^$>-RqtI> z;TOk!7Y;p_J^kJL&QC!=`>Ah>DSHds%c1^C+sjc7VK})ZYw{J1`Fwa|TkKZ+(Drzh zyS)xG6`=egY5FdFnGXNfzSTcDuX%Wh+3TVD>ez!w{6&W8f`TgmnHN|%r_fh8m(Kv* zCbc33S}K!!l#5(dDx;FmmPAArpD0mm2_0oF9HZi4BOT)+)mV~TyVsR;k}HzF_bOF5 z-vawKGmD%R%6or9#7#3BG*2lQ`wW9$AmPv~>vSNtyLUYH&*T2if`Q z^R`luof!%cQfL4{$m-Mpw8u?}OXuVjfc&}tqQryYPUH;jb1Y5w;d_?|Y z+{w%0VB8^_iE0w8RumnkfX7guW&%2TbT(HIP=<(&YSJQ`XcC)a_?Q(5Bxp}`Hlx)? zWYB&I8l%L(avjQWOjdpEpNG`jl~@HG)w<3~++DS5<5*P%G~JDs{Ih}jySw~u=?FD+ zRSfa*0#T{T ze@jpeHqDwB)|(2s&+ZMzA%DgRmU{ej(#%>$Ew7ZXjbVdoX^!Qd=lRK{Gv$@G7E`x_ z3zDmfm0KZBTNE)h0+S)dM8dY?L633vBoynJ08}Lljf;!H{GFMy%HHK7^pMh?R788#$TFK+{&MVxoyde+fPAYF=S%&{;2y zi=bN=AOoi%E~46dK3bKj>&(L@_SJ`n)@(?~(#D7+w;_*P#hL+ssc+07dfQMh^%{OC zX(Ivj$@UW(sxWlhzj%N0e+r5@)H zTL$XK&g$biFU=Whs`U24eU63iQq-^l11cBt6K_NCBy~{+%GztRq7AQQ{uH>0<%3bK z!is&|8pFVk_HLmT66#=+C#uNC&L#Y@$Yeuo8Oz8X`fvC-hk@g=NRAdMlG@aY6 zm8^7mRB;bXaU|1 z6>+{|OeZ=xUR)I^B0XNAW&tN0yh5lDSNQ@)$5dK~Sy?z_TKR27iZ})Ft;AC}bt5mDC{6JhwQ!MX zVzOujQc*61*Alkjwc0@qZP-F08qYP=)^S=L8b?~cfkMIsHx+wB!^cL_8Yct`lg?9wEv=9@v>Zqm6yx} zo`uwkgt@J`Z`N#T3;QtIw&8O$%tz1Lu+WPODwUM6RokSfA-|EiqS8r7k;@`!z|h!e zO{1~L1Kmi`UGp15Yz1rg;czgKE#hx+=;A zbeZYCvPw1;m_VASIy_6Ifh>qDZdzTYp`u#dhOQrHp!>>Hv58Q;ydN7Evp;{X7ic;F z=(LWyBAvtniX_7TdWM{MynXHs>evmQ{j31wREgH*cJH%A*RNev{d(N zDjjaBKYuS!ozO>2KrZLhD6+Oq4qDM@seO^y%XEXqZsr>3IkLVVd71YFB2 z^kGR`vk;x|kAA?UfTn_aSw&?Lc^F+3W7)EpnnbmHtj@kMr$}`E_Q6Xvtd+!9y$U;G zI*pswI$zQZEh#BMyl#hqDtrn4cf6Q7PZNE)pl4@kGdXj6D`pY)tsed$Ud&P@pwMxR zprZJDsMb>sJuUO>Q1n2T97EAuEKZEIo>b|SG6~%~rKjFn62L20N#U4WG^P+7(WstO z%d4ffYu7CFSL4c3+NqPeJWM?~iOzNZUIE2M@3%}+;bU*#ohVF2K1|#@b@)hjyNGqV z=06QoT`mWTp}08bWUutD$iSATkX-07riHeOGJ1_FykP5L`|HAzZS+wztOKPS4t?@Gm zjA2%oN)O?2U)9_nDwF546T<`<7zLQ!)+``xWt&#dLT2R(7X7&wT!pN>5!+8d`{V$+hOk%6d zjv)rw)nbYX@cQ{nA>LHf79Rv}Ob!c&11e$bjIckI*w1IqqsRpP4Le$CM#eNv6gKFt zpz4u>ZFp9m2qWV4mrfZyF^t(Nxha=IhX^~eHxW^J2CE6Je%D8MuDXEhBIH!&FK%NP zM_mXyIceQIA%$W3%1|@J(9%;co03NRl+?`!SThM%Y`ofs(WcwFDr`*S!`2sBYbx;i z4WJ{0^9kM}dUB6Mo52KJP?dWRWy6Mt43fakeUAVQbH=+A6qlFFOOn=iPCJC46~yhW zQI=sy^J1gMgbmZxaZo;mQEY5#NAesS@4uM`1gUt%bMv90$~WBm?_u?wXnOEcWFv%Q z3`7XtB41vZ8g{233Eqagu~F(3EH7IO;Jm1Q=yqZq1ibvY8@5j#qwb?nlAI1dBU~S- zhQ9;irK0@$JAPzylcX!YzlCfEp@|0A;gR@tTkXa$lH7nMs3!fOA-R$G1hFBaBC7Ho zHgZD}W_ulh5bJgU4*lZIOO4rR=bxlz3~yVyv>_jnUt0DaJCBX}EmV2|1sZxI02>|y z`KN>Y6BkkLI!2ORX=6G%Wx=dypZ456Vn&1g8`apXmL*^h<<>&MOAPc=#|sHnANfrm z34(%6FjXgn(2SQVSnNaU!K_Z-3lDX>c9EVw4y{S_&^x^Rol{OC)`m2iN7hUF2&rc| zUybIn0Pm3SJ#&}2Cqf^>g!@fIN?MVDIL1pp|CLGc1>)AIG9e%kr4VA3U5IxB*k{pp zCVMV0aI01t%EYc~Q1wuP)}cpNflRfj)M#UBvzBP7h^Z77YH5&<+hp3$Ki_ zz?7A1QtOQqAY$qG%RAgE|4HW`ULnb^jabUOeN**}tDgP$pAh`g z^;D(oDl@t?=xUF>d{OM&Wx%`zurdP22&7bi%RGd31F2S1xqM+cFQx3-jl6w-k?8vT z*m-_`G~qkKnRc0Z4;vFAS|o=RiFdiBRVcuJ&Xj=tJ6P%WXi+XK?!-=oQ|217-F!-} zOl&V9LLTsL_`2XK^kb|{VwI7TL(#J4E89hUtLk8zL4Cu1kIU1#KeGr;RRIze-N9A> zb6BcyO;4dq8w~@qW-+J<&aI6?@mRB9^Ivn+aI=WB^l&$NXAyzuXe-K4=rI>gE{u(J z5_RD}zcqvS4V~dU76n(cM;0&TNs;}TC#p?mdY8E(NRp!OkAbVn1$Jeok#QdsT?oU; z-6#zoP!B8$9p@g-bVFtqDH@e1zHHX}s!tKC%0$>Kgh*7ogVX();hd{vQm_P{_{!de z)2>?0BXBD#0_qDc4wNvN21OMcM17@0`Qf! zPJ67_e(!&xcNuvQWT7q5hN&2B1a_=pEpp0J*iI7OvCZ2QR+?a_$aa!ApNhmxJ)8)| z{0wh@5mu9AOyp4ow<7S<9!7}6F339|Ob}LCMjB3=FqriHj_hGQ6-<$FZgxomn59h% zU?S)t z%F2HJqt6O(h{e6g*E#|ao&Lc_I_Q6~m&#gDW3VV^h6K~1>wpcTyPwGsfq7-C9s{r( zA~`@R*)ZLnDx?t{D8I6L)f7J)oP68>>tQDLABN`QQi&_(kZhVH{8F@D*yzb^&c&r0 z)^M;^h)&oKaPa4)rlg1$%Mi(D#LBYZ0?Pv765TUJt1r<#iV&OW)yASaRaV=h&u?a~ z_u#@dx1JwHmBpG&v!v$6a7fRL{@NoDgBSss+|Lt!-?jZcOJF2c7?pB;`AC7V@`H4U z&nsvU%A!2^3gNPOE`?@8nNmH;4Bed&{^Gp94hp5iJ8J|)k8L9CWL1rXfBFl=C=C0%|75V*V$y=XZluOK=9FWTZ%=~iYkz2z9cmS}9 zQ^K|ZPaEyc3mtbEv|vrAnMAJ9RSt)=&Mf}3*!6`A#_L*~WEn1+%PB?jb-r0SdpF}q z$M{$kMO57*_lPSfbf$Sy@%7h45j}_GwX#YNRx(SN&y9-{%kA|AJ{@u=y|_{t{`R90em#~$NmUZxiFmewRXTH2u z;j~Ko;*OaNOXoWofNO4cjm`xg3*A`m4F=hbvs@87hhD^qZ-O>`Uu!tAAN1!`Pv@OX zbkXSZrH^Yp<5GuZHghN2v(Z=|pW`*jhVD*aS@Tzy(Re&@qU&L^ky6nCImPB zTvdWXNYxw6*?Wy*CEBLN9J_tx)IZvn?>-UzQ7ZbH@+aBqimD^}*|f)`Z#xu%Xy9sN z^|sJd?kF{H$QHxDF)jS}M)rgHNFU#y`@0MuFB;4%Pv4^J-#xm3unYXZDc>!}roOV2 zN?D_3qRS_*6r61=1ZA42-}!V!D*~oYRIVcOx z7>2wNO{FfkhT-a3o_Zy|%at&%lp#R#OCSaFwaP|mO`uZuXi2JS@?n)k`W?;1XSBiDZ#05u#tJ7shiTeY&$BI0Lc82Df`fPmxeL7j)yp)f zyQ5*YE<^hPUptMiUr?iGX~)UDg#t!d`^3>qCQeTT)5%wle#Vo{NfB1FRH-Oo+$D?j zXr??yVz^?npOVP(<+S)1RHlr~j&u4vw-ns+xg8Am&@i0}P+>~DI={o0RCt(|_6}FU z>M$oB{i%xSXfZE!u|nJYm`A2bI!)+7K(XV0OD8o0xzt*+EzWez=A#v zNw{ZSFr=S8@x!6~mTwMfi2+`0q5V(|{d@{Kg=%{%n_}adkjYo?;57MP5GR8mYwBN( zK~L7?8DNoMpgKRPk&}ZQ8-^wT4#>9bB2ZYHLFj~d3bub37S^h>>4yKs{zE= zdc9}o9EB=Yo}MiMuP%%t_T?NxCnG2MY=$>`in-~QihRSa$^>LW0Wn; z=oa*`QR5p-J45kM!lT6ugpimy>aY{jJ4=+xG9p%ok<1VhqzLl=1#bg|Zqq>eyVP*6 zTS@Ns<;*IVG7m}BkvHkpjH2}Xau4>f?7_G*#K|xFa4hL`{9^)y&H=r*PT7apL0*HG zUkB~VY-+^GCO;=)d#XSD7h^GcDUXw#)eN#$Oco*^7G^J>$mypI*jlf3;UVqC<9y!E zC9w{$m57mP#qsEm=F9|d<;0rF&@EkD6@4K`Y9T>90w?Gos$PT4U2#p7rrg@HZt6f9 z`UH%T?EJO`zWy1eqijy9(Zp{CX}>YyhQ+nC zV9CVupNUc_ViDzs=s0`zYghaH8SZ=KU3)`5z&LXH4a$#^=3qjfA~=tw0r!C$?!cVW zhY*vFU>$Q=$DrytZ<{oKxm4&*R{hDCro?~TNWT!Z*pddIMeZnF>pfTDA=6241hK6S@1C)+6 z-7)KJ(xS`2=nRFP0*`CfmNuVnAk>f0#~cKMXxw(isKEKWjIi7oKlT@wsGdv!{W&?0 zR`)$QYWM*?-Q)|wM%8w#Im8}%?8W-RK=lZ{*P)_uu1ml_ahc0bg~zm4G_b7K$=d>y@DN>{dm!ASk$qu1XC^V^Mo3ngEsxRxLb~Hk!oh!)0q4e`Y@T)1rT>QMS>I z#B)Z_Pd~K$Up|u(uU>wgMR8{fI8T^S_F-`|J_H`iL zQ!=P2i@@2nqj{2(u~kUybkGvEzSJ_~m^lu!N@_>00M#fFJQh;i7)S-%uLgm)Ry15Er*qOcWRt%qhjO&O>2% z2oDLY&|v>K+%&)_s{NQS(16I4 zc0oEKn|2TLSlC}^4O`C-bB(dD=~QB$*U^D7r8`MO^oW!0fcprLLPp&7RX6p&BTR1C zsK@&{0Je5Yz^g6$Y2s^C{i^8Do-}vmK}+5iMVM)0`lJW6jrt;t^Kq>q?=ZpMO08Sc zO!vX4_R;9%1b=>Mbc4%_GeZBm1+_+!Iw&v)B@|h^2A46AFL?BYG;J_5An+uJF=7;= z_5_SApZ%KL^h-X+P!E2XtMkE3Nv-4XeqhB_p|^n;HrLPJB=C0(++<1kq+LgV?$?w( zFWy{N;%uO(uRQd3jO21wE(fTa@Dr`7U^y4E-!5R4v;!op^X)xpwOrD)* z^{?7CEO;Z)_Bsef=*vDUW+v?9SgMEz{+QFFmrPm8;+TiGupIOBm-O&AyIoc_(M zcmvVae#9>qUu!};kDh%rD#egEJNvc2C;F%jlK(-Mgmfiol4cdR2o|mG0L>ZXrsc_- z&x>8neU{-%fPH|MvLG+34Q7nc-0*D0f7rDk?}ndLGyxJXd&=B6{u{8;H!lR;A81W| zQ07YlqKvns#}oYGjJIe}dji1*=d9S%-9abkv~19C3Ort5(#x*30Uv%L+muOXxjWX6 zglv#K{TNw)DW-OCYJk49r3A4Y$iJIb*W=c8+*G0tMfTHU z)w_Ek^W-3z9`NQ?ZTBy0@&{Dyk*)-Lp?9Rm8noQho!j!qY)lU~3_pWE(&dim?j^49 zbozNul+=HC;k>2GoAulkv~9Dx;p9$s+_ZTy zjK>wLyi0Xw>Gi8!pSdS(O;o&OcZO{BTfKODk^6?#2uG;hl+;Z}E+09c-vJ+Ae!O`_ zct0BD=Dy(keGVt-l}9D+RxP|!5@irjxj!liCw)0FF_HMIat`6ts`LWxggg4PIAQAH zoujg=G@1;Hby+$_i;lv|k@`Yg+4g=1K+hN?%uZQdfwo z@Q&P4J%@eJJ{F8e~26hyOz&$>f zq&Zn&qp2o{^KkAKoq;B05#;zNBo9A5g-}KxS5CXpEci>!W4=I9nxD}fqsc`oRx>(owcw%+-xcBVssx zX{aMQ;h8o8#%bPN1wOU>mmde~an|hq)IV21 zmDEWtDp3U8J!?1n>!)nC0>KS#g+ltQuOel3Nf3kEOGKEf!sDJopH zR#De8!Kxm)p=Cm;C(DPcuSf?g!EHV$CDo)QPSp;-&~&6`bF~*p~@-z zSG2uszrTAAZN82BBvTRX7waX_IyL^UC>a5Z7;c9VSrQ4)6+`XLxSRwuOe zXssQydCz|lxUztKf5YI^^^upcf5sXU+N*Z`iT0qR*VB0);XrObzu$I}3d z|B3`x6;%ZpUgf6S3m0-+Xqi?ahc718w2zBxV1>WTA`hI2*(h{{e>o|pcrP?zcXH}7 zdKWI4{Y*oc5g=`ZBn^rpTUJK`Y@V{32Td%)AiS80>-ud=r7A&MD6d-f26|!EMu@+wr3_v_jWtK#Mcsy^y$dDr5Lk>ci^M(5s}s_whE~{&>vR5&kpbHdn;NW4 ze2EjMX~}9{;^|J^`HW;nn0yfpy^-sypWLhrJLQX=Y%}6swT**=n&7Y&HqV4fm~$zO ztw{Mhf}~(S$sOB5GrJo8S|+%mC~Bw)*bX?0yX#BNzYVGk2ZgkT`VcT9dweTuQ`jom z?oj^V#i5hICSOhb%jeLQweUEyGtwQ_sH)z`lmmI4FTFkVu64U?lCWnX!#@V0TykhGWVY z9XRqmsoOk7aRGHp_V&|49YV{zIA$4*_izb5q7LOt5jcH&UtABZBa^^k`&n9HvLucMOJuBKs7tDi>;sf;D+|+Y|65HK`o{E%e9TT_j>0?wUWX0~> zU}9E^p7Q3oK(o*OWhTfudRNF0Jo4kU;OdGx>8^qlA!y1bDYm3G9lDEktiKU`XGFI_ zl(GcLX&4|GAF3Uh9{mB+K1Oi2VYpE=JZH~prCg|<+x^3uUV|3@(PVy~Nkor4%|S(* zi^ng1oy1w-g)u8iLBtVa-!Z8&Mww9Y;_Uf8j9`i8({hNAd;~35`s7o_d z?N(xj74j3^S3GqqQsy7hM!t`sAA|J1Zun<`mt41Ck#lm>N;}55R@GXWGD?%2j^6>q zDGAL5(z*NvVcq+`&vdC_+SIN39d&OkqogM$ad$$3y{`buXNhZ)FYL|z++NRjrROAH z$hViHYx*xxp94LX(H_I9XP?Cs-^tmRmP)9v7=**E2GZwgYwWM!=)InL;ZH(f=GRcn zQBOk=sJb$fOTzZK4Dm8VpFVETAOjX~jU08^HhzQvt!ibCWIz{F@|-??ViTk6TrZ#g zO}o)-E0XC=(n-H3jBQGcTOJv}tKf84mJesg*nW3Ok{FA+;+1jSAB*Dsa+6P}NB4S1 z!yKm;Dda_-QWEj^-HAD=2JPjYggHx(TKv{(fT~*sZ`2O0;Dyf+-d8kg?`^>C6FsFS z4CbAkIlYIv_!>zRrv70$k?Lq(^=I`LD4 z&8Yiv3b%}SoW=vL+-oGd5T^H)PC%)kh|bHv&>EHKTTf4!U&1zm|X`_ zt#ek7NXjVxT}e_sUXv&cd0ezX)*-f=EM|FLyDTDIrm+F(A=sOGhkUm|PNh!MEP7oI zU>HYK^zPNr!!F^F>P?J8sN0e``V{~v!WZXl0BUG>7tN^WdHz|$%k-UwpQG)$4?gU} zG~#(x25T#gZ=l6A=6MQ_%!h3_+&2?#!0yoarh`j_#j!i-ki;TwywDmsV+_XB22!Aj9rD>T+nrV%<%|lg2n6b9h#t_>yyO=tJX~_GTh~ z=eaV@VqA=oq@kKWQO9CzN2~N$=P};BNVGCNmIzkG{5y_a7qO0F)XORa&lI0DRBP~e z(D#6h=ECnJ=LFtaZt0k2h9sk^ihXdahAeaT5y{0W^-bCm_1F>NGYGB)56P)U-Nc4U z*L~|V5w77^QHI*?xM6jHF{3K5Th5|=;RQ|1GBSH`49l=e<^FwG zb}8|N@3BZ&<0?%mwem3Ss<8tc6;gTSiUY}0C--_yN_iEv5$AHboGRP6qtdG1UF~8y zHJ=oWzt#>0Ekip+H)t7^Vn@ao=5D1P{414mM=KUwe>Y?kon08acV$!9HFk_wxx`r4 zLXB#j8{DeCQMqUGX>3|dC;2wSCa;~N?Ynd+Z<;Wsx~`RsWIw+APVEx9Y~~nyyExkq ze4P9pyFo=*PZ*E1CO}wJ-e`dpqbytcM7` zPwNl7Z4%UaQT>zX#WN$)jdo1Ag#e#K2p%%#3z0Gs3wCguD46`tf}H#YMmc5&S~5-u zdUhb6q_7R958Vkfd?Mo?^fZIXgeGW<&5fPbGC5$V~y4bzKs^v@a4ks38SU z=!ajLltQ2C=?eUwC};4;NKBxg15k8DemR9mK%B}0U!3M_+Nap(mNn?sj&Cj1n*S}> zl+~kw=?!Ct+K5Qn;49CotPOfLtM1SvZGZ8UDECABS0!RtSI&|b63LVrEgH*u^9PfJ zS+mR;w)%ljRY>r;E1wH1ybF~@k6$Cd-`(mXF4Jt)WRS!I^f*7}hx29+#8Op*g#?H7K21&Naxa`AHkbF-Lly8q8y>ci9d3V@YLZ7&q=IX z`G++p{)SBeaK%EEuXLZ|z2f*U`cg>lJjOPVEJJ8y1(?jOxiIDD>>)qtNY}|QvRr+z!(lb#2PEfbO4RYra z^w&fS)m^++ZQzHSHQFzOy`+bN7NW9kfp-0g|*ToLtUgq%rc2RlP zf$`IY%n9VU1sW1Y@MjiLCLhr^)}_n}S1)z?{r$*?AiMmFDC8l}$(IT6Pc;b$uC~aE z(Uiw)vTbzxx`A961p1y~nFe6%d0fMOcKQ);HIfWzpVujwaG!`;V9yskBv$Q&xn7(q zil%~;{Z#cWiu6Z+7V-lZiL!GQu{qO(pJI1~UE!NDa^_B{5nqjvr#{O=*4}eP>>506cVm z#q05RI^%VxDF|H3-*nA?w5z;d+J`(jrB}HMYfqXALEB)PnpE)ZDXYXCpcv`ogt>k9r88p*^oks8APs{1JsOCgIV0eA02gHYY7A zw96p;))f3&rPL`oM#1s`2Wp&>aiY;yymo+^V6g+nJqJ*@TLH=_N|tG`701<;70*f= z4#fygG}?pnUn}Ai&^8Dzx~g`x6{ecqHiRd7ZHHkG5&d~>M`%y(%dJ=-Ya)?-Fh1dP zig!Tie#$9u(nBDFVEV_$r1-G*HMlkV14g~)A1uX}@v^QbVPU(<>>y0AhsqJwzJyDR z5zp-kvQm*Yng0A7#X_p2=@KpvZ$iJ#Nv`Lbzg%vDh>i(IMN|GD@J@*EOxt3905Xj( z+W=*(Yw_uy2LPPpjapwH%}crGc9d=lKXNuQ30H)wvJ&u@mNrcddB@em`Tpng{i`gX zcQ`FU?-RmIofe==i(r9PWMRyk`9 z?q68}e|`7h2?uPsQ)Vae_84lTI~4jkgfr^UAhDnRBJcT7aS#Nt4-s%~xnWl`69m%_ zq1hMQkl8*e)sDO25HRQXn?)V%*zA$JO}k+dJ(;)j)5Rz9h9ZReDD>HW~0A#btdOF|A0EIFgEtql78@f|{YU!PEh)bw%Q@|teg zXOD45Sh~fCUl4=$J+W=xp&O!};dULpfVurV=0FaE_C0ELC7{Kp15Wod*>EnhOG%eC zW&c$E>_L}p*@u#Ngx=mGimksd4=bH`ojkSPkuQBpN<=E^UiUU1z8O#iS~UMnE)@1` zpm$yJzo@Gjs7{HVyGbT}5d>!xj@H0C$cOro}y~vCis|Ak|tgfcNFA(1{rr z2M26>V4gh`S`A=zXd!D>0!}y#3)fATQYUT0oLvXnp$s?BSSBkut4AN1#~ztaH%Y|t zwT8lo#ie(dGKNyNQT3Vgy8db7_vS4_LU~a{*z=79|(*3PTCkMO&l6| zWU6NuUq@+nMHIHgCSk{m$MOFe9fWr`!dd9?_VeK}{&ayvFM{A@hdj{T1zw@8i7h>oslTcOLm0|jm<($iZg(mx>QM^a(DLmb|JfG06?<2nmSys#Px|PX70-VMyf;G8v9Lt?X6D-Z^u@N<5Y<{3fqyzSa z(uPS)VkDefkVDeQnbxCvsT$BR`VG@8ReLQPU>7sSca&LS%`z73n>FChCX?;++He?{ zm-;B~j9V9YAugHZ18oig-8VQ8$(@;U0a5-YogIj@sQMM2?3gEqbMFkfhb=8X?+Exw zJELd97%*0N(lI1%_nds&Gmz}bKCLcNh+AZSOG{PEb?yJXk0BuTxX;eax*+4eW9N_CC~v=RdkFDEx_ynFX&OC_c!L z8L>me83&}?%My)xkzuCIKMw_2Sz00~Z-__np21iI!qWtz(*y#IeLzOvNen+w6JAWn z?kavBa(q&h1I>S1C)ff@;IuOPl$LJu^q$%0e+utSBfoUQJCz~h$clAptV8EvM8~@y!$|Y_gTy_^UqNz%44F3XK~D^ z=+ph^Q*?oHp|9UTKD6pkQ-ej>l`00!1Ag0SHaO5_5fA-y!X_im7J1(g!<|1X#tf5% zu_syMrga}Y!N&&Op>I$85s$;aY<)o44@>OZUmz-3djcXSKJ24k=;t%H`sojmYUkcL z&Vj!E5|es6d?;}C;;eH;E*ee4TOJTmZwnC^5sJTYVi-mg4N9oR$(tJ8ci4Rpk^ z^Hg&Lzd3~y6*{sn$16%-us@a=^jnFh&oA#JtSz>^vvOIJJaHaP5_`Xp2RHS1C&9g{ z=#3L0tDb|g7c|YV1{bpdF0{>FlMiz?y_|gscv4+P{BG9#I9mueuirNK8Fi(XAgdVu zR94R{oP}JF8*};hXZk?Ua-SsMfYwRZ3bcmdS)nVC{hUuoS-pAtFo}JX3wUtHLVp} zlxd#N7%Z<`v94lI)iI>kSJN7)zT1c zlm`*0em9J1^-D2=nN<;F>Qwvatdi}%w03r>{EO`fULSpdS4W#2*<)`?a?R=6h}RoA zvFj!&twRk)e7`eF(0Dw!>k2-rnlmuN$7_e8GWqFP^}TCZqaP~i0RmzVo#;YXIjh_fcnyj_>v?0MO{hycWjVF<Ph{ zmUrric&c{lvUW<>^T^se@>p?oP22KZ@#ipVShwTK{pm9gpQL^GIGG&xytIFPb#TT- z$6$ju7~Q?QRR~Aai9>$8^Dqjlk~)&zfDB*0YsOTJ*$Y_Lyj>|}#sXsSO52DJf*k0_ z6N&@DL*~A=Mhj8w2CPVBhkmOwM^wY5e?cWa6GrwmU{Oxl>?xnS11Uwl!ywpMAj_QZ z$B`yd-^*gZecc1}y4^)^*CM~NiF_~ZBI|YY1D%&KAC#Wfbb+QPU}2S3Mx&-4{7g2* z@*~hh-L7tGv4d{TBlkd^u)cdy!urnxGp>PmpQ(Coy;0?~diVpEmbLd_ipHBp^aDH3 z_-lxcx%YT=W4Dp>Vr=QHkKw~&&r0+n<2mA)TJ!j8G@t&*6oFzCUpe?%Mb=$wIMoL2 zpFp`jTzmBQ#G{kAW1Fw#K#W0X`*@XihUx?{iOQhXlHH@=Z z8){0{YjYg_B?~r5Xn~j9EPE8G!-W$Qq*Qf zz}|&AN*;Y3Mb-j0C8HHUkH!(I9VC-auh=w$AD8(rs?%{~R82&%G;c=gK!k@Kp1Txf zMk6}N!IBNVl=RdF)JY5}iRm)@_Z z%;^2Pn>8y>(%hWIy>Rm~(W4`?Xefh%`{Vb%T#kI^TvTf4%}#ZWUc_twFtkg40HNys zGb)@yHO1B6uE=P911{7l%W))gODcwUV$g0?=*Vl9sN?6V>eqE5Lq>vj);3w^gJbvC zo_v|_ySsR`9BQv1-dY90?4Hjo8l^e{b^@92zND}r>Gs5 zY!7Pd@^MC2()|i=zOu~;_Z?nh!?dF(byVn@%DGFygw)Jwq@^F2uXU2`zP9ptC3%O@ zS6(i0wlpix5Bj?66Cln-T#5a`a>v3QE>?YxHl4g8qc=g>>$Hv4oZYc+?qD~*RPweI z47PR~C`aE4U&I&J?l7El|Z7VcTPHW74^$VhH{3g&T{Vb(xBSCo|bEfC_ zE=&v|rEOpRa)Jx%>G|a2>yf|IW1kk0g)#j2=ItYb7)I+f*a5ANq1FUN}`Oa^pKL>tfXy>axmf+s_pHuX-Ovu|q%&Ty| z0zswf&$iCYoqkXgF6JpncT)BXp-&NwxpETYk~8{o`|B!m3Ssf%eH`k*Y^CIu(uRA6 z;q3D~60;v*=f=iUfS%mFiNrKZu`4nk;$s&$(`h437DGp56G_tA%o=ov7<*f-hTW}n zwE6sI3}p;c+cpbT>(rX8bnL`wV)@yyiQKHXOjPx6_*frtErfgMSxSO<2-3XEN@3sT z!Z1+bZ-~jV=o6Q zL@WqHn$)7<2|JdrpM4||uoH`FQDW{0oC;>Qu4Z3i;%{CMm)vR<*6NJ}_<9jMt+gg< zPqqdRgA^|fC4lw+n8$ZsUb)r`XrjUF;N)0BO z)7Fj;HZ;vx_brE&tPgNGk;oWyS!F!Gf&R{zD)mNlZP&}lcFtw5xSG{<%A5T|C;U+t z`g<9J((|6YFd0hOe+~p9(;iA~bVnrU)nkZ;LB)D`Q$!#OMYoEj?ktp$C+%*@*~ z7%p|yDD#M|QvNb_EstGBd|>tz^&ZPn&aGQoI65ahm40k{&G4@3HV~+|;#AvmEb`g4 zS*Ynud_|g8?z#Cq{Xu9f%|8!(c3ay;v&qC-1?gV39b8%^?w*p{Jz5*}irfgM_gvuu`89tz(9^(kmwV0tdS2bv+z}qPp;NfVCq~I5y}!(5 z7`LGX-|!Yz=c32_mwVkBT+cTe=u)gvv@B z$u~h6fZDI$_~wkP^(RpV@@inp{ty}IuVjn}gHPaSOa)PiNCW|`3D=@iBN=0ezgI%F z4wTM|afI)F7xK0eo9Zz<=Vcfkl4~1cH*wEGsu~ygeyT&A@Q%BS>eMWz(Hhj8&_V)WW>f4On&sk&s?A~S9K$9&n$wx$@f-KXk0Ncl|nc;4v zkkt-@MsIcbM*^x^!hqmM(qAS5hb3tCAfK~p&(eB3bUI7LR!1`dMepX`!3DT7 z2dr!*5B_yt6rNog{3>5fM*NxhRRyY}#dX4daRI=}xJg0RTBxKt*k84TV{SaZzM%dS zYBj%1*G>Elw5kFB@q^?40=2TUwlH#6GBI-gZQ*@LU@k@d)lxv-BHwC2yfB#pV!|)IvR72@%>B_ZrB@-tY zf$C!`rb3^6TiZC)I+FYR4K8u)Uh%F?9w9TjtU6slcgpA|>%txj$&vc=+F~^{YQzME z4nPfveJWeT<0J2#Vld*327uDMB>zl-HL3041GOrp`bPsl$F?%ek}yiqKYTjhK{@~F z8r_5+A|uiS(eI@szAM|ag!+na7u=U63BkL*qnYtAlFn>q_#^Op4n9ck2EzSP{+p{H zSJLQ|yG*NQWp;C9UD1s=0B3>9DA%XK!Bh5mq<~zmE}p$aa#G$Lt%7Bx?#dk78R=-R zlQj&11@R1zR6_q4CTuxgR~Lur#S7IGARmGP8YvT8C`V23!{oB5GUAgHP!8^}i0Pn25VPLg&jOnC* z@^mHvXkl4&S@F;;er{fiABkA<$ZDZ;h|`J|Ai%vsWWvo#M17N(MQ`qyWt2_~Oh=pS zq}TAcXUM^S8a;>);2!{Y?snsRA|?a^R57SPX)1vJgKsg zVC`=6+1>R0ZmH$!2e1|x%eCIvuLuyEA8QRZfoj387&LhjwgI@$|X#Ql-AJhg82-FX{sy6g|_usTm_$Pp^iKd?vVyw-(GK^j){ISQFLai zUt@5AAkm~Rto%>Yc+fEREzm_jKs+^U3P_ot6#@YTg@IMvXmyfTCotiO;)|25BM75Dn#$Xb7a>WzxTyNpW#;Nlb$?on<&ElfUpOP09eatc@kWd07=^W!4HZBy1yi z*__Jc9g7NmtE{{NvQzsi{jE+RHl7;CVG0T#}zFhH(0<7Z|0^+u{3JSBBl!)7z; z*%s7QZFIIx^7YoELEvvIEq<@v^@p>lTQ$ZDwO36uq`~i)pZ_|Bv%=MO6r+jyZE*Uf zY~E-}nT*O3op)d!5Jr%-IqSB$KtC7HB}81>6!}^UGj$UU99f2D9j)*((W~_KK$e@gAIap z$4r$eBDq07M2{<1rc+){*UzlgzKPFJ%%tHIBjS_;MWOSJ^3^Ht;Hy zjTchLg*1a5z{U!dF~j4So?7lDUslU&aH&wD3FHrV)MysKh4} zd+^qyNep6P6!4<+EkK&{=MNB>wDHs&KL7hi$DV^N%bt5=8j{E1k>#yjuwGucysb%& zDw|Pmv7RTkB405}7+pnyjl=rRev$VZTZa-`Pj)~qZC5<8C!HN%jh#Kl$Ad)ELZs<0 z7Hl{%IP@%@M;t}sW)kcDRWEr$yNn)M&>Kw1-bRQ1O^!}h_|s({)>hzGB;|&r8J{HB zl|!)H${XSyjjf<{e`Z)*Qtd+w-3v70Re>#ew@8Z1_F4h{Vi%Hy2@--0G&%}hew|8j zL0E&{KV{K7ZF!WuX$&*joOmSY9a5d+#G`x7QTr7O=$7Lpv8lHc??@8y42S%;@LAae zzMLxEdv~_r!fMadM+J}VlO>b~U;s37=MmC7lIKieO4Oa;X|eL|;pz}~TO%Y-fL zgBrCt1mP>#yTb0qD2`Gl^ea>UdaUDRmzinz*Ru=gHo@gG)wT!Bk$r#hg=u>gmP1Ea zGzk!JPIMaK!ZzctU;29WO#Ebs0^cYT)452sXiUYMkSEiOeQAd{hmPc_D}BTHNVEOOox9RChp!=wh_H8l`uDx@9%q|RGvAPB$pvqGVOmsT3mr*a*{J)PwQ z0EdojC^bX64mVvc2WO!aC^}9B%VUA!2TSLx|hLAo~Nq&|(c9?h!I&n2Yg6ykQ^EgqDWU{_!R2 zWIrY;!f2v7Z>_wHvu6HDEfB*i>(@&?`Pe&FFF;cIAril+T~6*@fk%&Pa?9!DfjI6q zX8S>#w)PBqhL(=WFr&+yr$gc{6oEn$rDrxi+JA$Ayz2{GszoWJ7 zinq#Y%{9O$eR5FF(~n~uPNO9~giWzu8K7+qC^zViIEZqOw5Bz&KN}wTx?BNns?Fb7 z^|y0Q;M8H(23QRk7%b>7GFknKLT<4~d6fT8;kg64!Fj*kMAEnTg#QP^`+se%iHN~} z8QT9o1&S19rNO?9g++@_hpN`u@MPe2-h=-2`s{cB5gm=P$4ydoUU4Dr=w-x%1WXP( z(&rD~Bu))JbQ1{X(DaE+4m%2w%}qUB5Ih4)K@41eptm*iJQR(>N?hLRMKqvuMq4sO zwGh=kW14bSH!Pf@5G`H(xUP0=Q14HwPDN54SAv7B2~}fCN?#&bJaC>wmfR#XzD|js z<4MZuui36@VVw#GK!8JYFfw1&Byxr8*suYrGT!ATG|Ks3Q+9e!k*s9!o*5*=IH}+ zw(qxgGv%e+r26JyRd)dpI5{fc(c$R4u~=lCR6FDlRt`Z(jN@*>(_1Mw1UWg9QJ5~;q!Skn7O>^ zYU5caZZr>Wn_@tDyA9velUnhS_8E>8Ik&jZTtxD6zf_xpnCc&H9tJ8A7!5!0P0mv9W7X?!cpW^b2)p)&m&|J0>6 z`6yOW{q`JBM#ZT&m=hWLBT(tEEobiFvc#AyTUp=e zT$$v#bb{)W0@fi8>u9skfUY*9a0<-Ho(F>I+$w-J=&h#tpQ}t9BG6@hyhCw&@vf3? zHAd0uFpj-ZEx6Stly(B9Y1G|Bps_}etd%*W7&bu#Ek(n!KQZf*i{OP8tjma7(?ReaOHelzZdjw3t@UWcH+7^Hbyw&&29nXe4Sk!QV7e_`f60(AqmSkV=XWU?-t-0n0Q^AoIiY( zn!9+V0o6z;3a5(2?CUgB36 zESI!F=3Du2tKruIB6&3i@oTSW=GDmpTJH%gmCR)j=G>&~F7rFD)iLSXZ9Y?N^v>D$ zG|%a5=7jV0Mq9@tosENN6P>vqcG!Z?BiwN?Pob~w1H_OxKgtH@4!&q7t+3Q{xlvez z9-DHn_WC^aib@ns6F@u2-Ck}E(A!Q&aH*E2Y?;?JgBr8&ZH;_a7w}t#ouF(`Nz^eF zl{wX7hu7TQZhT52ub$0IXt@jtDQrmpR#&8siU`iv6zcFKV@=?q%Y0N%u2s4W|C6Z8 z`TVgd^JPU_8}UTjs5waJkYU2K**W8e>upn%j)SBOl>M{YNc2n+4LkVgYp+wc)7(- zIR96OnfCJoJY>C%a0Ulm`N~TY*bv+M{oaVWeSM%qw*re&}G}gnyKj` z*)0+%>^BQS=uTwouVWz%~j=pvcHNfwl53^ko0D=6$Q+$R~+7H29KvX+ukOeZT; zEL8y79C8HeB9>1H30+|kFW{Sl)RhBZWHS)2-F{o)TvmM_>T-Le#<#_c<&c2zGLb5wGqZ!*G(2uDP1NWcNT9pt46P=e z28OaMv*14CmloU@&ALJ2-oTh#lq9`kNj7XL@%xCoyk~iRL8(8J#%#-D=e=-#%J9Fz zZT9IghxEW8vBx7ICVt3BNh0NS1%klOeu_tcM!pXu9uc=QhedD$!aE=Av#-%q{8{z) z@?j^6_iT(m@`QyfQG5!Mat0O~^xN3D;l55lHJUk_&|U~M$%7Ms-9!TwqF^fB7rKNn zEeI`wC~{zBj7NtiD=%CB+hIsWm~#GMHNh78c7L1S55xb(Vf?nUH~H=4{(lhpqkqXV zf(c>!m_CrIN++xC4VBTc_d^qV>FqVxot{!Q}U+lkMk_E#lr?@)Yv(ZMRoCY!iXAE8)TA11s|}; zV3?sYwSr}*3F3_^ck}meNm4s4pv9wrv>0ml@oI-0`l2yaey!w?kByZ*dk;Y3z3Teq z`QzQr!!>eI%?>D1mcs=(K|7XWX|6HqPp`;^muKdA4y;S07r#DXVAg>fD?yAG?)=Gc zP_51A`#%u-V>>L2^52DM`nKXk|KG(>G%@{eXBVvSSFTSGJ&V3bOjJQs`ToxhD8V{* zG*%cEs$4XMA*Y+xScG)SVv-^B*8X5(IFvwdEK4_imLQqz=6U9n%<9Tj?lj{MEY1m% zU_Puj21M;7Kvp}fvR8jxx$+vk3+cI3NM{MCI}eVN@jVfDMp^*Yt8j~0;RHYF#j^$i zAf}V)^hStNK@)BhtH$tH;*|XG>9$OKbUHw^B-x}~9DCq5-corie2Rc6r*2WYz4my*mGk50Bsk-N$AJ6;y z-L?1g)LMJjUMuua>o>38%9%7jBYaFp$9(tcC-d}~6s>V3@dlK50)5uFOHx4|Kl?e( zyaUGg1h>&@W}GPnSu&KTw9<)|tjy6fBu%G)RjwVgti&9P?m7n{^W_@&DmN~Ti3Jzr zSc4cdJ1RkxtB~0H@T8Bd1!mkQ+ex=fcFEaB#zHn*0(jHeL<1}WT78lU8alJ`L&nn= z)7hGA>->K*VC>3^ysr9A0^N5)DE`Z2{7>#8i3$xBYj)G?}wkk(eP%48+}rS9NospwRxZ6-%W93+4+#7fZg zC?JK2ne1>8TJif_xGg0?5HHO*0opI@coQQ7@c%?M zegw`uYJLZs_T2~kF9S9g^>9#dviI=(kAQ2GC!_!ZD7?lyOIE%cHP8*%K^L_`;mryS zBt-Lc<1E7rq_RRxOY3pB>>uFhet+;uw?&`^TAQPoVA7o1-KTx0US>|v|5z_VanSBY z7g&^kYCq{&Gu5LBi$3&7ILY%lxZ9YIrZFaujm&b}sxBCtMHPrdS5$>AM@PW$5)%R3 z9wqx79M_(O#WDXX?{(^6-lOAb7C;mmk%hwRbSd5>rXI!p+*@zzA1Mh)PHrY|oQvfI z9_1FLGoj=*{i!G`?;4nGH3_2ffc0cp$f#Y`)a~z<@{Rf4252k3OT?)1Wwr_VIkusCIqlFZ zLU1JM`1PJpcJrskqfN0Wi!?b(9p7^>1ceTXuEYVeg9gCn_M;K?lFSW$Y3TZZpdpMS zvJWjbDLv^wJq}>zo^Y$*>9PAx5AA)>ctsAf^bl_Wkx3R7n!B;hftz&{Ew(72U+PkG3E4dFcd z@@0yuob_-ViFJ8o)pBUS7(`~0k&g3sO(`jorrk`OcOZ{CpfTAJYlY2}%;il9*UJ-{q1;sTE|RY&gRzeU z{Xr1g5=4uP_=F--OJDzSVh^Wt<t{lsBeS5;! z^Xi{#=JxTj@Q~Y2NO~oFN$qQ4=hZPRhF~SvmEbZ~lc4LeKcA{Dm-m5a;B+^@moY}Pms_Mf#z^;6vvGY8T+0E$yZ8ry0{Yi+CucN;H(+%!9;5dzh{PANQ z<;M@||89x=$0d$YfA?25$NcKGoKGq(YkmaNl%`CJWs}tw94@YhMwzvOmgs;h<(8G- zsAoBolfytSv)MPrRxWdf<8OpEX2PXfNcgGhP+mVZ#i{82^p^A$l=jzGPAIXI@-eLY zq=zT%#@RFPWXk%B+a0gp=wl&F+p#}vX0KPt2Two#ND$v{;FA;wFMcly3-0eOP>{Zt zWQTs@78SFX3J^4SA0Ha#Tiy=>`~5|Uh}*SpbXE}Y(G9f^UllifErr=h++&2@c`nd< z#d|3L*+DdvADs^Rc@iFa^H%>uJmgt&%~J}nz(<1ws)uvCkBJ|T$ie?OzXN4Oij7Yqmy18&# zWUUvOIG@+VPOq;|4QvW`VL!X3;$;U^Ih%P=I)>|EL09A|DfBR7L$9<^BQv#IsoJ}Y zel4nQCkZyLoyKweF(xE#T&f>zl(X-=+H=q`RFt2@I>(5(f)^(e3pfZn;V!OJ<|!0sOP47GNXi4Y2Nw!|>iJgG2= zrD3hfXdQ%#2PKZG1*Nf|Yas2S0+*q}2b6^3h_$uT2ZxPV2RGRe@X5|)`bas%N&asPFr>WnaqL8c*rf(YG2h7 z9SwKuwK&w7YxvF?wr|!E58cE$DVEP>&Jo*gr2(o6)e732|Atvjj^m6HAT__w&>CB24%6_ zrmfK2sAjSW9W1?nh zMSbkd>u5KFNalq0VM9QX-%SZmb_ODaJLGyKD=67+Br)z~GH&A~`A36$Cp~*t0Sy5t zfanOg6Y1dJNlH`?h0th7+^%5W*?ejGmdZ7wym4{M+JF7%L#4H#%<0akrrW4{^bV>C zQ^x-K;pFXVjNyBuKwp<}Y{+q;_bml5mNPp%HR}b|u{xlM(siFoob72q!;c&}6eZ0Z zqs}%Usfx^AWOIIK#KC@edA1_vmAcF|Qr3`)WD@yV|Ew`~_#V;6TLp$JRqwZBk+Kv; zlc^y0mRrg|N>n9i;!mj*OH;ZSmOhR&4@MQEyAGi9JJ@MByOPE%8Khn-_X zFhzC*`_|6pG9+zqL)3+Db!w#@$-T1l=Gl~ATM$6ECyj}E=#A#Z{fLz2g;DlY^K5A9 zm_RHqgP8wm&O}YdywK}o)WSH$E~Pazhy`$sHT^)DfuhY0giQ`BG73p2rsI)Gy}< zK4DnV75~fxYP(};@ok5_sy`V{0u5;n^MEwlr7+uMC!vtrte|(x#|OUE1lzg`gW6eP zZEW~A%tPMM9(knO2gEJ_IL7rOEQWfy4aB=*_Nq02Yo>_zfD`=p#!61#Fod_l?l;T#cN zHFs_)&R!Wz^Z{^s^)!kv)YN44y^|^@IK2@cK6Law+2%c3@Rj-GVVK%ym)LQc!W$>E zz?RXBh_J2A9_oWVfKJrZfaBrLxoD2|Y?XGFH zj#H7iLsRACO?P3mxT7?~f^xLxnCxR#>T>u)#Xq%T+$GH;`bZ*LCb*BRe{b-g@A_{~!i#gnu#sPu z$OcQ1L|=o`UfN71ef`b#|4SgY{1rJJ1}C za6&8Xuy@P~!`249++a*z{DVghH|DzT{bLz2y@9Q81_;+~SxPH_cVVN`m1sG%zP#`=8ziM@I49F!*zXSQ0cj1 zEf#|`>+$B^8fI{l=E)1kQ;5G`ZGow%+QhgIEp$amgch2j^hC1Ovr;GYJI?m!D_$Sp zHI2hG^}qjQn^^8X{44Go%58lg;{R_*r)=zG>EQC83FtTVbo=I@VqmF@k&7l`p$`9j z>Z!HxpQz{5Xg_MUzE*Pfd1^+|_-H?@Vhy;`$S6V7ii8*#h|9r$@JtMWKM5fT0T}_H zLq-Omi83%Y|1XFt{@rh4$wC{FhWdu5nExe2{f~I$oy6?q>`nd`u})F{Ypk+_`fq!Z zBuNI35IQI%*f$FX(y@Y~kqm?c!Vt1h039zQje)~6X<7!Mxumru%GS2VO*vUG9EzoO>mg-5Y+e1d>(wqYd~RQr|`{@~7>qQu+}h_mBZEl)4Fl^d%ll(fT2G*08RnOG$F+ z5!a6fr6ZTqm>Jn%HOj(M;Q^{@Lc%0f>$+lnk|VC((LG|;_rGwkVf-{W2o zt+1x|clQ!y8__FCFy}Fqsz&X!$zuy_Oa>+~e{ru_q76sy7@7Ii6s4h4l|De6mMGJP zARQ;xZ#SEj{FmZ)@I*@Hruk7!;xu6;v$#w$^JjP$*ykH2W~}ivk{T1cj8KK@rtiOj z3l#@=Xx7;_iAq4IbdE^ax=L{76l`9Tl;yg22)I;P37fSniE8XwH*7ch|LHw=o78C| ze?&Ht^`pi~!?i?x9*rIkgm>i+iUDm|KdC%$~x#IXhRvMmTWOp{vxB7L$;+DrZ89 z5NhLy8&mzMynP|VVIJM2nsjbfVhQiw1=xmNE0o)*p^?^tbk0LJaveW4Zl@mGzRpke zd0sIe3GrIasHVTV9XwdOsF99HQrnH=x*o+mQuS!kS; z5g#8lJBpv~Onk99YSIX=lIa&~TS)gc-xJHlK5V8zQi6& zw5+QIS{~t)b2c<^s+mE@Vjb&=l8%c)4onYLB_Tb&C8Uk~bX;)6UOv-^6y@S7)`${q ze(aEQZ7$FqX>$-6F`}7sY)aoD0?N@q9mwL^e*@}N!;aXUeL37dz>Vjhk@(-NGF{_6 z^ej8ecW`)%4L>J3$V>KC8jz|6UxQ-#_v>T%4WnYkZ_DANF=~fvxc<@9xZl>s_U+bT znd$jHxPHLCoWFL_xWlHen4y(j$&`FIHLju3HY9yno?nT)*fulb#oGAuH^(NngP zRJ1hip6>)V!4<@f05h@y6Msk9#L=cPZwU0_e(^00JEpyZfJPXm151ncpPYJxP9Cmw8+=6UPrLJd2T?j(cSA7zQ}(+RA#njYByA8*nablkr6;A6EODtN>g-H# z#UyNubx_$Hm1Iv61wkmF(O&;sBu&)@q4Jb_BV`(=u)v^>%G zJcEw55UAuRa_AEk5KY~w{8;wHf$ogCP&xhhMQ81J&JMrW99#-xqGMKnmoJ+!8MKPC zw{kqRH7;wU0p$ztG0}T&TsHaxDu7q3=N$A!Ei#IDd3oZd2|6NA+cJ5gctl5Z z2~Ma=giheskAz5^dO{`*^a-}T)2b!Y(!M!u#$gBD5zB(hs&}D0M0dkHm66gFYQof~ ztHY)()a7Tb9bMT}J_0~hEqoJdfmisyP7Bf#|~Qe z_9djwH>B~vkrKw>JJHc* zg$sZkI4zJgLiOQ8dO8smXqCItX$vTyX&TG@E1bUT07n{Gec^E^7@*>iNAA4G+(8J; z$lA)tN*KapebBX2Shpb7xro4~{Y^R!Ij&S<$cUM$C$Dk7RbM=N)8E1kjo3LC+PFo< zfGqv1X+*egy+oZ>y`wPA?M{u$gB4ECqKyCB<*3>b(OPE+#Ais5M?z$7Mo7NAh*$_W z1&@4j&a6xg@ea(Fh?Hin^`|Bn??^s8QEX4{L-*`aL%f?b%1lVJUZGHKQP0$=^G7PI z%`wl)YVox5+e?l8ahMy7>eNRjOYoR3?Ph-eU22jA#eMoD#E%yS<;{sFzvP!`kmHLu zW4vo+oqe`e@!#H#?B=zC#Lsi&0&!GtxCAF!Z>U6l%ZMI1VJR%wwe-W=%Rs?5|8?Xq zF85k4_J1#b&B6^VL)&-Qg?$E#)TUIc!c;sUVoI!h|5W!LRxQi#D_^@B1D2Aj8(c!* z5ibnk)ncMtZ`TrC5Rj{*Vu|F8tfrQUG0=C0`$OEuQ>Igt zu@WW7;v8c~GO*zv)cA!+eKwl78Qpu+*Ii{PZ~eT@Y>}6UAV#q8fHn6T7{iZG z+2+Hdn+Q5=z=$VgAKiLZQwU~ygJs$R$%3SGT>eOjhvN8KPK?Fa&zl;Lrfw#jw5Ig* z5!R48<^rD5-)U@}9#O?h76-0lmDm;coLfi&ma;WKVsQjGTw#j#k`Qz&z`&0(kBau& z78GoU?8iJKgS=xm{t4q(94&{$FuED;cTK)Bz1mjZY=Ch%uUOVE&B;0*H=C} zAspI&9VMKXiFL1i(crk|0L}#F^o~k7W4sqKGNdeTMZT<8On&;C(hgwxDm$R+w=XQL zM-HMVfH(w`ZUyrdir#DQIsQFfTNp{m^xSfi+|5~c0s$@jRcJ%hck^_aP)EBnoSio+ z-RfYad5nI#90KN`Q|Tmi4l$qEKL+PSRqh&Y?Gs zMCg8GE}*;QbsuNg#9ydLKMN{>bXcW}src{n1)&BR5JbN$TC||i|73EQag7d-(1TUl7WC; zNUmmMuRt-!HRsQ}6puIijj&&{T&PKDS5qHc49M8;G5}q%18KkSRj}g&PrrX}|91Q1nRLYws-Wm+@Kd>-4nFR&>;*%3eGcwI) zs`kG;0TCQra=bO;K};ak*R0gYR%nPXNG>5Vv-qT?ObF#tc@Ccm@4zt~hAdTY3|avkci&!wwx+t|;~u^KIoOJ})dYF06hoK>{^RpGiQU zL!=y%B^Vova&+zL1Uc;{@0rL}p7z`*rU#*;6P0- z4^8ThW}WeDoFK4SNK2pKWlCd=jrwY$Zt2d;^^3Z^OV(~T5TMF}t2dMhaJAv+X6f4* zG7VG5nJG$BDTr1-LqV926Y_k)?yj5mjpvmFjc+XZk75L>k6erKDBy4WU;e6vqx)h--v_Qd{wSJGddlX>~?aWygMk00Fs-Aa

    +j_OKf5Frx{1q8pDOzco2Ak#w2%D2lmQBepw2U* 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 FTg!>M1}ulmZfUl#<@|mVSC@c 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

    E_ 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

    ]", "i"), + // checked="checked" or checked + rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, + rscriptType = /\/(java|ecma)script/i, + rcleanScript = /^\s*", "" ], + legend: [ 1, "
    ", "
    " ], + thead: [ 1, "
    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

    6Z3{z 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%0D4w-iZ4XS=zBA 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 diff --git a/jsdoc-toolkit/java/src/JsDebugRun.java b/jsdoc-toolkit/java/src/JsDebugRun.java deleted file mode 100644 index 319a5c6..0000000 --- a/jsdoc-toolkit/java/src/JsDebugRun.java +++ /dev/null @@ -1,21 +0,0 @@ -/** - * A trivial bootstrap class that simply adds the path to the - * .js file as an argument to the Rhino call. This little hack - * allows the code in the .js file to have access to it's own - * path via the Rhino arguments object. This is necessary to - * allow the .js code to find resource files in a location - * relative to itself. - * - * USAGE: java -jar jsdebug.jar path/to/file.js - */ -public class JsDebugRun { - public static void main(String[] args) { - String[] jsargs = {"-j="+args[0]}; - - String[] allArgs = new String[jsargs.length + args.length]; - System.arraycopy(args, 0, allArgs, 0, args.length); - System.arraycopy(jsargs, 0, allArgs, args.length ,jsargs.length); - - org.mozilla.javascript.tools.debugger.Main.main(allArgs); - } -} diff --git a/jsdoc-toolkit/java/src/JsRun.java b/jsdoc-toolkit/java/src/JsRun.java deleted file mode 100644 index 25f519a..0000000 --- a/jsdoc-toolkit/java/src/JsRun.java +++ /dev/null @@ -1,21 +0,0 @@ -/** - * A trivial bootstrap class that simply adds the path to the - * .js file as an argument to the Rhino call. This little hack - * allows the code in the .js file to have access to it's own - * path via the Rhino arguments object. This is necessary to - * allow the .js code to find resource files in a location - * relative to itself. - * - * USAGE: java -jar jsrun.jar path/to/file.js - */ -public class JsRun { - public static void main(String[] args) { - String[] jsargs = {"-j="+args[0]}; - - String[] allArgs = new String[jsargs.length + args.length]; - System.arraycopy(args, 0, allArgs, 0, args.length); - System.arraycopy(jsargs, 0, allArgs, args.length ,jsargs.length); - - org.mozilla.javascript.tools.shell.Main.main(allArgs); - } -} diff --git a/jsdoc-toolkit/jsdebug.jar b/jsdoc-toolkit/jsdebug.jar deleted file mode 100644 index a0ac7daa6bfa2633f1e2d27696b8afa8577e986b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1307 zcmWIWW@h1H0D;(^G7B&RN^ml;F!;KLIO=-(x#|Bq#lR2%Rm#B-15_Gh=^Z)&sB{?+ zivTfPsjs7-r<-eVh@P*T@0pE!O$H*Z5BGZBf7s?J9KC|AJ+Gr%P373Zt1%C?1ay4! z4L`nZJ^S^yzhCRRY9aU1#Ru-b(2LaT^9st^7=T_lsq$iQI1#K0f`^nq8gOKMVSdQfSeUUE)iadB?oX}?1b zBDT(rPHVY39z=hf=+J1g%QbR^G{+GaA)!adn0$kSZY|SQ`w^bkknx87N8mBZgD!HL zccec%cXIFZdB4B@eaF1xNNa=XkxG?{9L@&<{R$@wX17jhFezhslhl9QuAjN-!`8f4 zaWflEKbysJ(0cXipcmS^JSUv8yIOUsTS>ZWeUC&qk4`XQtNg9% zGShSOd#ytyQynaSbUJkZX1Fe;JcFZGVA>9CDfb7`TleVyJU=C1`VJ=bpTaJmVjMqx zeiJrB!D?-{JZiMm3U6pj0Y-}fFj~05(Skch1iisA@`8)WaAHf#j*U*us!MZkB{kJQ zW$QRr*C3xdN6_bqVRv=fJKLS#&+Lr9|K6^Fdk$xW;~e*<<82IlA2}xRm`8eWdL(-v zFe|Hg^XY~%NBqlW@1}BCXx>)fxEGb%>*Rmcw`t0kfVZpkS0$}Tb6;8Amsi$xvyDS= zHOt1ILXK5-rI)YwZhLm&TkE^69kntY7Doj8dpeTme6SGR*eBt*;?ceDXJ;-e_m5rs zG_Z43Zg$%21q!->nw&6s01TzTcq0cCEWWsI0r}7M*Gbh5zyv6N7d1 zJ*UnreLn4SVAZwNc@nD*S>&C*nCt&h=X8PS_ef)&rEa;dY&q_4SR7_dHCcBte2&sW ziAnAX`TJWmjMJmmDfonQOlg|WVX~9I;H+R%=LLbpnY))1a_oyc`*YKO4^GpWr;9h) zyQv(1nreSM@2BCS$@_jV26!_vi7?|X5`ZxR1Og0i9YHia*Fy>jm{#mX1V{r2ENRpR zl5nj^1qQ-$hzaOf6s#R=!doDTo?+2-qo*Ws{n6SHjpF>5PkvDf-E2& E061^!ZU6uP diff --git a/jsdoc-toolkit/jsrun.jar b/jsdoc-toolkit/jsrun.jar deleted file mode 100644 index 49c03f4c6f71d4e24f3897794d40585ffc7c20fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1303 zcmWIWW@h1H00GaQG7B&RN^ml;F!;KLIO=-(x#|Bq#lR2%Rm#EO0aUu9Ei0@CsB|F^ zivTfPsjs7-r<-eVh@P*T?-@hxLk0q@4{Rs=FDMBz@LYUFG5YP200H)J%U7PkSyDwS zAMD?LSLXhAx%EdM#2<;gtGRK06Z2|s%~v1POOLEmkI2#N-!*BGXUoiaufD{7pQn1V898}Z(mUA<;|J`%+l4kt zM)1#AGT{+B!u24J{&~7cCX+A_uVR5~2Gb*zDit}L4+Q!ZP8Q5=ozh@Z#_}eq|F~U0bJK^dd9UJT zHk^Joi{+s8>eWFnw0C(QuLqbl1w0yyq|auAP$IC9u&?Ao`DzhyJoW_FWf4 zWux}p*ezJtp)7dZ;^9QW!Y*UE=SpUR$^xt2?Y$+J(a&7G?vwNGE-cT}pWdN3X!N9okav52Uy5(f@gVO2G6TOzJ;{T|UJ)e){|- zY=(l>+HQH&XsH$6(3S#>76V|kaD$@-cZ>*ngJa|c7n9+{mX;kGotjmb=H5zbs(;GX zajdREK6Q?u&lAJ$>a=&ZJHMaV8Grx1T?6+V&Irdj?oG$r82CPNOyV(*^x*VJ_C8=% zR`KT34P}n_m&@Kw<*?Aat-x_FD!13k|Eh1(lrI5qSLv@xT9M|yvbry?tm|eQhu~_K zjX#APtL#cIU+>-a?83L!cUwDZWjZX52=@1MB+vO^A-b_o!g0l;d*9E_TvqNMyY^{d z=c?T7wAl+3bOSd}nAN8v4L4oaBcY#n@ciAmE)eZ{(*#w< zomu*P+U3BiYpe4lRvog)JAE-0*oy~{1`t@%s0}3H zT9FD1gykIIvIsqkg0+K9cnKuYGc3Ap^pu3q-2hBmUd8Zq72wUv29jg}!Y@FYmj%QF E0CH&O8UO$Q diff --git a/jsdoc-toolkit/jsrun.sh b/jsdoc-toolkit/jsrun.sh deleted file mode 100644 index 74ca79c..0000000 --- a/jsdoc-toolkit/jsrun.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/ksh - -# launcher script for jsdoc -# Author: Avi Deitcher -# -# This program is released under the MIT License as follows: - -# Copyright (c) 2008-2009 Atomic Inc -# -#Permission is hereby granted, free of charge, to any person -#obtaining a copy of this software and associated documentation -#files (the "Software"), to deal in the Software without -#restriction, including without limitation the rights to use, -#copy, modify, merge, publish, distribute, sublicense, and/or sell -#copies of the Software, and to permit persons to whom the -#Software is furnished to do so, subject to the following -#conditions: -## -#The above copyright notice and this permission notice shall be -#included in all copies or substantial portions of the Software. -# -#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -#EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -#OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -#NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -#HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -#WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -#FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -#OTHER DEALINGS IN THE SOFTWARE. -# - - -if [[ -n "$JSDOCDIR" ]]; then - _DOCDIR="-Djsdoc.dir=$JSDOCDIR" - _APPDIR="$JSDOCDIR/app" - _BASEDIR="$JSDOCDIR" -else - _DOCDIR="" - _APPDIR="./app" - _BASEDIR="." -fi - -if [[ -n "$JSDOCTEMPLATEDIR" ]]; then - _TDIR="-Djsdoc.template.dir=$JSDOCTEMPLATEDIR" -else - _TDIR="" -fi - -CMD="java $_DOCDIR $_TDIR -jar $_BASEDIR/jsrun.jar $_APPDIR/run.js $@" -echo $CMD -$CMD - diff --git a/jsdoc-toolkit/templates/codeview-igz/README.txt b/jsdoc-toolkit/templates/codeview-igz/README.txt deleted file mode 100644 index f593f4a..0000000 --- a/jsdoc-toolkit/templates/codeview-igz/README.txt +++ /dev/null @@ -1,5 +0,0 @@ -Codeview is a template for JSDoc Toolkit. With JSDoc Toolkit you can generate a documentation website. - -The Codeview template is, like JSDoc Toolkit itself, published under the X11/MIT License. - -Codeview is Copyright (c) 2010 Wouter Bos (www.thebrightlines.com) \ No newline at end of file diff --git a/jsdoc-toolkit/templates/codeview-igz/allclasses.tmpl b/jsdoc-toolkit/templates/codeview-igz/allclasses.tmpl deleted file mode 100644 index 774643a..0000000 --- a/jsdoc-toolkit/templates/codeview-igz/allclasses.tmpl +++ /dev/null @@ -1,20 +0,0 @@ -{! Link.base = ""; /* all generated links will be relative to this */ !} -{+subtemplate("subtemplates/head.tmpl", {subtitle: "Class Index"})+} -{+subtemplate("subtemplates/menu.tmpl")+} -
    -
    -
    -

    Class Index

    - -
      - -
    • -

      {+(new Link().toSymbol(thisClass.alias))+}

      -

      {+resolveLinks(summarize(thisClass.classDesc))+}

      -
    • -
      -
    -
    -
    -
    -{+subtemplate("subtemplates/foot.tmpl")+} diff --git a/jsdoc-toolkit/templates/codeview-igz/allfiles.tmpl b/jsdoc-toolkit/templates/codeview-igz/allfiles.tmpl deleted file mode 100644 index 042927a..0000000 --- a/jsdoc-toolkit/templates/codeview-igz/allfiles.tmpl +++ /dev/null @@ -1,41 +0,0 @@ -{! Link.base = ""; /* all generated links will be relative to this */ !} -{+subtemplate("subtemplates/head.tmpl", {subtitle: "File Index"})+} -{+subtemplate("subtemplates/menu.tmpl")+} -
    -
    -
    -

    File Index

    - -
      - -
    • -

      {+new Link().toSrc(item.alias).withText(item.name)+}

      - - {+resolveLinks(item.desc)+} - -
      - -
      Author:
      -
      {+item.author+}
      -
      - - -
      Version:
      -
      {+item.version+}
      -
      - - {! var locations = item.comment.getTag('location').map(function($){return $.toString().replace(/(^\$ ?| ?\$$)/g, '').replace(/^HeadURL: https:/g, 'http:');}) !} - -
      Location:
      - -
      {+location+}
      -
      -
      -
      -
    • -
      -
    -
    -
    -
    -{+subtemplate("subtemplates/foot.tmpl")+} \ No newline at end of file diff --git a/jsdoc-toolkit/templates/codeview-igz/class.tmpl b/jsdoc-toolkit/templates/codeview-igz/class.tmpl deleted file mode 100644 index e54030c..0000000 --- a/jsdoc-toolkit/templates/codeview-igz/class.tmpl +++ /dev/null @@ -1,712 +0,0 @@ -{! Link.base = "../"; /* all generated links will be relative to this */ !} -{+subtemplate("subtemplates/head.tmpl", {subtitle: data.alias})+} -{+subtemplate("subtemplates/menu.tmpl")+} -
    -
    -
    -
    -

    - {! - var classType = ""; - - if (data.isBuiltin()) { - classType += "Built-In "; - } - - if (data.isNamespace) { - if (data.is('FUNCTION')) { - classType += "Function "; - } - classType += "Namespace "; - } else { - classType += "Class "; - } - !} - {+classType+}{+data.alias+} -

    - -
    -

    - {+resolveLinks(data.classDesc)+} -

    - - -
      - -
    • Version {+ data.version +}
    • -
      - - {# isn't defined in any file #} -
    • Defined in: {+new Link().toSrc(data.srcFile)+}
    • -
      -
    • Extends - {+ - data.augments - .sort() - .map( - function($) { return new Link().toSymbol($); } - ) - .join(", ") - +}
    • -
      -
    -
    -
    -
    - - -
    -
    - - - - - - - - - - - - - - -
    {+classType+}Summary
    Constructor AttributesConstructor Name and Description
    {! - if (data.isPrivate) output += "<private> "; - if (data.isInner) output += "<inner> "; - !}  -
    - {+ new Link().toSymbol(data.alias).inner('constructor')+}{+ makeSignature(data.params) +} -
    -
    {+resolveLinks(summarize(data.desc))+}
    -
    -
    -
    -
    - - - {! var ownProperties = data.properties.filter(function($){return $.memberOf == data.alias && !$.isNamespace}).sort(makeSortby("name")); !} -
    - - - - - - - -
    -
    - - -
    - {! var ownMethods = data.methods.filter(function($){return $.memberOf == data.alias && !$.isNamespace}).sort(makeSortby("name")); !} - -
    -

    Method Summary

    - - - - - - - - -
    -
    -
    - - - - {! var ownEvents = data.events.filter(function($){return $.memberOf == data.alias && !$.isNamespace}).sort(makeSortby("name")); !} -
    - - - - - - - -
    -
    - - -
    -
    -
    -

    - {+classType+}Detail -

    - -
    {! - if (data.isPrivate) output += "<private> "; - if (data.isInner) output += "<inner> "; - !} - {+ data.alias +}{+ makeSignature(data.params) +} -
    - -
    - {+resolveLinks(data.desc)+} -
    Author: {+data.author+}.
    -
    - - - -
    {+example+}
    -
    -
    - - -
    -
    Parameters:
    - -
    - {+((item.type)?""+("{"+(new Link().toSymbol(item.type)+"} ")) : "")+} {+item.name+} - Optional, Default: {+item.defaultValue+} -
    -
    {+resolveLinks(item.desc)+}
    -
    -
    -
    - - -
    - -
    - {+resolveLinks(data.deprecated)+} -
    -
    - - -
    Since:
    -
    {+ data.since +}
    -
    - - -
    Throws:
    - -
    - {+((item.type)?"{"+(new Link().toSymbol(item.type))+"} " : "")+} {+item.name+} -
    -
    {+resolveLinks(item.desc)+}
    -
    -
    - - -
    Returns:
    - -
    {+((item.type)?"{"+(new Link().toSymbol(item.type))+"} " : "")+}{+resolveLinks(item.desc)+}
    -
    -
    - - -
    Requires:
    - -
    {+ resolveLinks(item) +}
    -
    -
    - - -
    See:
    - -
    {+ new Link().toSymbol(item) +}
    -
    -
    -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -

    - Field Detail -

    - - -
    - - {! - if (member.isPrivate) output += "<private> "; - if (member.isInner) output += "<inner> "; - if (member.isStatic) output += "<static> "; - if (member.isConstant) output += "<constant> "; - !} - - - {{+new Link().toSymbol(member.type)+}} - - {+member.memberOf+}.{+member.name+} -
    - -
    - {+resolveLinks(member.desc)+} - -
    - Defined in: {+new Link().toSrc(member.srcFile)+}. -
    - -
    Author: {+member.author+}.
    -
    - - - -
    {+example+}
    -
    -
    - -
    - - -
    Deprecated:
    -
    - {+ resolveLinks(member.deprecated) +} -
    -
    - -
    Since:
    -
    {+ member.since +}
    -
    - -
    See:
    - -
    {+ new Link().toSymbol(item) +}
    -
    -
    - -
    Default Value:
    -
    - {+resolveLinks(member.defaultValue)+} -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -

    - Method Detail -

    - -
      - {! - var methodDetailCount = 0; - !} - -
    • -
      - - {! - if (member.isPrivate) output += "<private> "; - if (member.isInner) output += "<inner> "; - if (member.isStatic) output += "<static> "; - !} - - - {{+new Link().toSymbol(member.type)+}} - - {+member.memberOf+}.{+member.name.replace(/\^\d+$/, '')+}{+makeSignature(member.params)+} -
      - -
      - {+resolveLinks(member.desc)+} - - -
      - Defined in: {+new Link().toSrc(member.srcFile)+}. -
      - -
      Author: {+member.author+}.
      -
      - - - -
      {+example+}
      -
      -
      - - -
      -
      Parameters:
      - -
      - {+((item.type)?"{"+(new Link().toSymbol(item.type))+"} " : "")+}{+item.name+} - Optional, Default: {+item.defaultValue+} -
      -
      {+resolveLinks(item.desc)+}
      -
      -
      -
      - - -
      - - -
      Deprecated:
      -
      - {+ resolveLinks(member.deprecated) +} -
      -
      - - -
      Since:
      -
      {+ member.since +}
      -
      - - -
      Throws:
      - -
      - {+((item.type)?"{"+(new Link().toSymbol(item.type))+"} " : "")+} {+item.name+} -
      -
      {+resolveLinks(item.desc)+}
      -
      -
      - - -
      Returns:
      - -
      {+((item.type)?"{"+(new Link().toSymbol(item.type))+"} " : "")+}{+resolveLinks(item.desc)+}
      -
      -
      - - -
      Requires:
      - -
      {+ resolveLinks(item) +}
      -
      -
      - - -
      See:
      - -
      {+ new Link().toSymbol(item) +}
      -
      -
      - -
      -
      -
      -
    • -
      -
    -
    -
    -
    -
    - - - -
    -
    -
    -

    - Event Detail -

    - - -
    - - {! - if (member.isPrivate) output += "<private> "; - if (member.isInner) output += "<inner> "; - if (member.isStatic) output += "<static> "; - !} - - - {{+new Link().toSymbol(member.type)+}} - - {+member.memberOf+}.{+member.name+}{+makeSignature(member.params)+} -
    - -
    - {+resolveLinks(member.desc)+} - - -
    - Defined in: {+new Link().toSrc(member.srcFile)+}. -
    - -
    Author: {+member.author+}.
    -
    - - - -
    {+example+}
    -
    -
    - - -
    -
    Parameters:
    - -
    - {+((item.type)?"{"+(new Link().toSymbol(item.type))+"} " : "")+}{+item.name+} - Optional, Default: {+item.defaultValue+} -
    -
    {+ resolveLinks(item.desc) +}
    -
    -
    -
    - - -
    - -
    Deprecated:
    -
    {+ resolveLinks(member.deprecated) +}
    -
    - - -
    Since:
    -
    {+ member.since +}
    -
    - - -
    Throws:
    - -
    - {+((item.type)?"{"+(new Link().toSymbol(item.type))+"} " : "")+} {+item.name+} -
    -
    {+ resolveLinks(item.desc) +}
    -
    -
    - - -
    Returns:
    - -
    {+((item.type)?"{"+(new Link().toSymbol(item.type))+"} " : "")+}{+resolveLinks(item.desc)+}
    -
    -
    - - -
    Requires:
    - -
    {+ resolveLinks(item) +}
    -
    -
    - - -
    See:
    - -
    {+ new Link().toSymbol(item) +}
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    - -{+subtemplate("subtemplates/foot.tmpl")+} diff --git a/jsdoc-toolkit/templates/codeview-igz/css/all.css b/jsdoc-toolkit/templates/codeview-igz/css/all.css deleted file mode 100644 index c253cb0..0000000 --- a/jsdoc-toolkit/templates/codeview-igz/css/all.css +++ /dev/null @@ -1,358 +0,0 @@ -/* TABLE OF CONTENTS: - * - Browser reset - * - HTML elements - * - JsDoc styling - */ - - - - - - -/* - * BEGIN BROWSER RESET - */ - -body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,p,pre,form,fieldset,input,textarea,p,blockquote,th,td { - margin:0; - padding:0 -} -html { - height:100%; - overflow:-moz-scrollbars-vertical; - overflow-x:auto -} -table { - border:0; - border-collapse:collapse; - border-spacing:0 -} -fieldset,img { - border:0 -} -address,caption,cite,code,dfn,em,strong,th,var { - font-style:normal; - font-weight:normal -} -em,cite { - font-style:italic -} -strong { - font-weight:bold -} -ol,ul { - list-style:none -} -caption,th { - text-align:left -} -h1,h2,h3,h4,h5,h6 { - font-size:100%; - font-weight:normal; - margin:0; - padding:0 -} -q:before,q:after { - content:'' -} -abbr,acronym { - border:0 -} -section,article,header,footer,nav,aside,hgroup { - display:block -} - -/* - * END BROWSER RESET - */ - - - - - - -/* - * HTML ELEMENTS - */ - -@font-face { - font-family: 'M1m'; - src: url('fonts/mplus-1m-regular-webfont.eot'); - src: local('☺'), url('fonts/mplus-1m-regular-webfont.woff') format('woff'), url('fonts/mplus-1m-regular-webfont.ttf') format('truetype'), url('fonts/mplus-1m-regular-webfont.svg#webfontVd14f4NN') format('svg'); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: 'M1m'; - src: url('fonts/mplus-1m-bold-webfont.eot'); - src: local('☺'), url('fonts/mplus-1m-bold-webfont.woff') format('woff'), url('fonts/mplus-1m-bold-webfont.ttf') format('truetype'), url('fonts/mplus-1m-bold-webfont.svg#webfontIjI5mZqE') format('svg'); - font-weight: bold; - font-style: normal; -} - - - -* { - line-height: 1.4em; -} - -html { - font-size: 100%; -} - -body { - font-size: 0.75em; - padding: 15px 0; - background: #eee; - background-image: -moz-linear-gradient(left, #dddddd, #f9f9f9) fixed; - background-image: -webkit-gradient(linear,left bottom,right bottom,color-stop(0, #dddddd),color-stop(1, #f9f9f9)) fixed; - } - -body, -input, -select, -textarea { - color: #000; - font-family: Arial, Geneva, sans-serif; -} - -a:link, -a:hover, -a:active, -a:visited { - color: #19199e; -} -a:hover, -a:focus { - color: #00f; - text-decoration: none; -} - -p { - margin: 0 0 1.5em 0; -} - -/* - * END HTML ELEMENTS - */ - - - -/* - * BEGIN HACK - */ - -div.containerMain:after, -div.safeBox:after { - content:""; - display:block; - height:0; - clear:both; -} - -/* - * END HACK - */ - - - -/* - * BEGIN JSDOC - */ - -/* Start menu */ -div.index *.heading1 { - margin-bottom: 0.5em; - border-bottom: 1px solid #999999; - font-family: M1m, Arial, sans-serif; - font-size: 1.6em; - letter-spacing: 1px; - line-height: 1.3em; -} - -div.index div.menu { - background-color: #FFFFFF; -} -*+html div.index div.menu { - background-color: #FFFFFF; -} -* html div.index div.menu { - background-color: #FFFFFF; -} - -div.index div.menu div { - text-align: left; -} - -div.index div.menu a { - text-decoration: none; -} -div.index div.menu a:hover { - text-decoration: underline; -} - -div.index ul.classList { - padding-left: 0; -} - -div.index ul.classList a { - display: block; - margin: 1px 0; - padding: 4px 0 2px 10px; - text-indent: -10px; -} - -div.index div.fineprint { - color: #777; - font-size: 0.9em; -} -div.index div.fineprint a { - color: #777; -} -/* End menu */ - - - -/* Start content */ -div.content ul { - padding-left: 0; -} - -div.content *.classTitle { - font-size: 1.2em; - font-weight: bold; - line-height: 1em; -} - -div.content *.classTitle span { - display: block; - font-size: 2em; - letter-spacing: 2px; - line-height: 1em; - padding-top: 5px; - text-shadow: 1px 1px 1px #999999; - word-wrap: break-word; -} - -div.content p.summary { - font-size: 1.25em; -} - -div.content ul *.classname a, -div.content ul *.filename a { - font-family: Consolas, "Courier New", Courier, monospace; - text-decoration: none; - font-weight: bold; -} -div.content ul *.classname a:hover, -div.content ul *.filename a:hover { - text-decoration: underline; -} - -div.content div.props { - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - background: #fff; - background: -moz-linear-gradient(top, rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0.2)); /* FF3.6 */ - background: -webkit-gradient(linear,left top,left bottom,color-stop(0, rgba(255, 255, 255, 0.7)),color-stop(1, rgba(255, 255, 255, 0.2))); - -moz-box-shadow: 0px 0px 10px #ccc; - -webkit-box-shadow: 0px 0px 5px #bbb; - box-shadow: 0px 0px 5px #bbb; -} - - - -*.sectionTitle { - font-family: M1m, sans-serif; - font-size: 1.6em; - letter-spacing: 1px; -} - -table.summaryTable td, -table.summaryTable th { - vertical-align: top; -} -table.summaryTable tr:last-child td { - padding-bottom: 0; -} - -table.summaryTable th { - font-weight: bold; -} - -table.summaryTable td.attributes { - font-family: Consolas, "Courier New", Courier, monospace; - color: #666; -} - -table.summaryTable td.nameDescription div.fixedFont { - font-weight: bold; -} - -table.summaryTable div.description { - color: #333; -} - - - -dl.detailList dt { - font-weight: bold; -} - -dl.inheritsList dd + dt { - margin-top: 10px; -} - -dl.inheritsList dd { - display: inline; -} - - - -.fixedFont { - font-family: Consolas, "Courier New", Courier, monospace; -} - -.fixedFont.heading { - font-size: 1.25em; - line-height: 1.1em -} - -.fixedFont.heading + .description { - font-size: 1.2em; -} - -.fixedFont.heading .light, -.fixedFont.heading .lighter { - font-weight: bold; -} - -pre.code { - overflow: auto; - font-family: Consolas, "Courier New", Courier, monospace; - background: #eee; -} -/* Start content */ - - - -/* Start general styles */ -.light { - color: #666; -} - -.lighter { - color: #999; -} - -span.break { - font-size: 1px; - line-height: 1px; -} -/* End general styles */ - -/* - * END JSDOC - */ diff --git a/jsdoc-toolkit/templates/codeview-igz/css/fonts/mplus-1m-bold-webfont.eot b/jsdoc-toolkit/templates/codeview-igz/css/fonts/mplus-1m-bold-webfont.eot deleted file mode 100644 index 6c64f8d71d2dc6a375c4305c90921ec5359d72cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18590 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 diff --git a/jsdoc-toolkit/templates/codeview-igz/css/fonts/mplus-1m-bold-webfont.svg b/jsdoc-toolkit/templates/codeview-igz/css/fonts/mplus-1m-bold-webfont.svg deleted file mode 100644 index 5129512..0000000 --- a/jsdoc-toolkit/templates/codeview-igz/css/fonts/mplus-1m-bold-webfont.svg +++ /dev/null @@ -1,134 +0,0 @@ - - - - -This is a custom SVG webfont generated by Font Squirrel. -Foundry URL : http://mplus-fonts.sourceforge.jp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/jsdoc-toolkit/templates/codeview-igz/css/fonts/mplus-1m-bold-webfont.ttf b/jsdoc-toolkit/templates/codeview-igz/css/fonts/mplus-1m-bold-webfont.ttf deleted file mode 100644 index 0cf54cbbef86edd4a4ed0f9749baa373503e6854..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18428 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%0AC(?{gh&L` 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.{ zVmBk|B^IAJF{~8BLODUdfvJbn3D3ctPSqn^qeZHSb#c@ot^xZ7t>3<-GrFLCU+;>h zmd3`GrWL*W+80DSd9xHc>th9T3vd2?f{9|x8>Jw8_FutgcQTk~T6qo5Xwqhq?HK}&IN=nM z!P8)UIOQIkB8x@&EH3<9pq*#{#MdH(ZKzLUEn??_C2i@p*~VU)y)T`s%hQh-i!$dN z!I!QgD^v&rcw=H0eX=Jk784hJx@4WXVjw84ne!AS5MO5nj*U{9SXBVcVV#kTc8j#V zn{>~TD|p-_aY`K%p@d~cnw!!?Is+S~Ws27sSbYsc`9lUc51o&FU~qhV`~#M$G5hs7#zAB9HY|+9E8Ps=oQ~t*h{-Ke zZq_^2>rWF2})o%N3w22_G0^k=f;Oh@8gGxrS*-XoNAm+ z-zeu}zW*%q)FMxUuREJi#A$3dzV4(pF6UkozBiH^m~!oF+)I1*0robgNXxjF(KGN{ zrXNTbaj%vC68}hol~yxjo?$aTbu3u(<88jVzhX6}w{hj8|5kwIT7~Hc_%e~h|44Kf ze|XQd~FSZJ7 zIc#ItwqknDxOp*z`^BrtdHq}Y8r*>@Re~59*;=H_v#bf^! z8xdi&?Zoypwr24TwVAeZTd-aR^Fgnt8Y914Jd5{n4E;jvssFc&J<0d;A4w0HHkl5Y z9y1k9|6op-=bH!2T^BmdfT0HZ+5@ve&5sN+2eV|^Kk0}@Yl7E)} zPX8JIMgOk@!N7^YTfzF^c<@J|nV~O-ejKh39}J%fzY$pynTUKRS`i(KJ|9cO4#vJ2 zyI9d(@#%^eD?X^)Q~6NkFRNPc->Ir|zvsVKt9}}n;uZ1P@kQ}n@rn4C#D8B!&uJbV zVJ%n%6NOcxe@{cg+6V0Ly|w=DTi6kK;>hg4lS{Da$26yCeK=j0aJ>jM%-ph6)NwxW@4a|89n}hY=^N__{z`B957hwdJU>thT zi{)$u#$**VVhu)W9Y$$A#%Uu)=vKCwZDD<^AKd>Z*Z{i?k?b~h2O9+4bDEnFGg!El z+qj)OxRblMn|rvI`?!qk-6Z=a`xYy*Z?He(3iq=Uwoi`iZEaoHYV4QLKG)hR&arPZ z&U3~-Z|r9o`*vgBVeC7N{cL03W$YK~`!=K8Hly5JkAA%!t3aRU*B(^)=h-UN-rJ{f sezITdp??!ZmGKXX1UKN|GyQS=10Dl?$dM+Ns;0~mu3Geiel?i+S6FInOaK4? diff --git a/jsdoc-toolkit/templates/codeview-igz/css/fonts/mplus-1m-bold-webfont.woff b/jsdoc-toolkit/templates/codeview-igz/css/fonts/mplus-1m-bold-webfont.woff deleted file mode 100644 index f90475d890f59f3dc11bd651aac3859e148d3499..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11772 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%0A{fAkNLr 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 - - - -This is a custom SVG webfont generated by Font Squirrel. -Foundry URL : http://mplus-fonts.sourceforge.jp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/jsdoc-toolkit/templates/codeview-igz/css/fonts/mplus-1m-regular-webfont.ttf b/jsdoc-toolkit/templates/codeview-igz/css/fonts/mplus-1m-regular-webfont.ttf deleted file mode 100644 index 684abfd19f9d3fb00e02c8accb576edd2798383d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19344 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 diff --git a/jsdoc-toolkit/templates/codeview-igz/css/handheld.css b/jsdoc-toolkit/templates/codeview-igz/css/handheld.css deleted file mode 100644 index 073c0d1..0000000 --- a/jsdoc-toolkit/templates/codeview-igz/css/handheld.css +++ /dev/null @@ -1,217 +0,0 @@ -/* - * TABLE OF CONTENTS: - * - Browser reset - * - HTML elements - * - JsDoc styling - * - Media query check - */ - - - - - - -/* - * HTML ELEMENTS - */ - -body { - padding: 1% 4% 1% 4%; -} - -/* - * HTML ELEMENTS - */ - - - - - -/* - * BEGIN JSDOC - */ - -/* Start menu */ -div.index div.menu { - position: fixed; - top: 0; - right: 0; - -moz-border-radius-bottomleft: 15px; - -webkit-border-bottom-left-radius: 15px; - -border-bottom-left-radius: 15px; - padding: 4px 5px 8px 10px; - -moz-box-shadow: 0px 0px 10px #c4c4c4; - -webkit-box-shadow: 0px 0px 10px #c4c4c4; - box-shadow: 0px 0px 10px #c4c4c4; - background-color: rgba(255, 255, 255, 0.9); -} - -div.index input.classFilter { - display: none; -} - -div.index div.indexLinks a { - float: right; - clear: both; - font-size: 1.1em; -} - -div.index *.heading1 { - display:none; -} - -div.index ul.classList { - display:none; -} - -div.index div.fineprint { - display:none; -} - -div.indexStatic { - display: none; -} -/* End menu */ - - - -/* Start content */ -div.content *.classTitle { - margin-right: 60px; - margin-bottom: 15px; -} - -div.content div.intro { - margin: 15px 0 35px; -} - -div.content p.description.summary { - margin-bottom: 0.2em; -} - -div.content div.props { - margin: 1.5em -2% 0 -2%; - padding: 2%; -} - -table.summaryTable { - position: relative; - left: -10px; - width: 100%; - border-collapse: collapse; - box-sizing: content-box; - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; - -ms-box-sizing: content-box; - -o-box-sizing: content-box; - -icab-box-sizing: content-box; - -khtml-box-sizing: content-box; -} - -*.sectionTitle { - padding: 0 10px 10px 0; -} -caption.sectionTitle { - padding-left: 10px; -} - -table.summaryTable td, -table.summaryTable th { - padding: 0px 10px 10px 10px; -} -table.summaryTable tr:last-child td { - padding-bottom: 0; -} - -table.summaryTable td.attributes { - width: 35%; -} - -table.summaryTable td.nameDescription { - width: 65% -} - - - -dl.detailList { - margin-top: 0.5em; -} - -dl.detailList.nomargin + dl.detailList.nomargin { - margin-top: 0; -} - -dl.detailList dt { - display: inline; - margin-right: 5px; -} - -dl.detailList dt:before { - display: block; - content: ""; -} - -dl.detailList dd { - display: inline; -} - -dl.detailList.params dt { - display: block; -} -dl.detailList.params dd { - display: block; - padding-left: 2em; - padding-bottom: 0.4em; -} - - - - -ul.fileList li { - margin-bottom: 1.5em; -} - - - -.fixedFont.heading { - margin-bottom: 0.5em; -} - -pre.code { - margin: 10px 0 10px 0; - padding: 10px; - border: 1px solid #ccc; - -moz-border-radius: 2px; - -webkit-border-radius: 2px; - border-radius: 2px; -} -/* End content */ - -/* - * END JSDOC - */ - - - - - - - -/* - * START MEDIA QUERY CHECK - */ - -.cssLoadCheck { - position: absolute; - top: -99999px; - left: -99999px; - border: 0; - width: 100px; - padding: 0; - overflow: hidden; -} - -/* - * END MEDIA QUERY CHECK - */ - diff --git a/jsdoc-toolkit/templates/codeview-igz/css/prettify.css b/jsdoc-toolkit/templates/codeview-igz/css/prettify.css deleted file mode 100644 index d44b3a2..0000000 --- a/jsdoc-toolkit/templates/codeview-igz/css/prettify.css +++ /dev/null @@ -1 +0,0 @@ -.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/jsdoc-toolkit/templates/codeview-igz/css/screen.css b/jsdoc-toolkit/templates/codeview-igz/css/screen.css deleted file mode 100644 index 8cb4bba..0000000 --- a/jsdoc-toolkit/templates/codeview-igz/css/screen.css +++ /dev/null @@ -1,297 +0,0 @@ -/* - * TABLE OF CONTENTS: - * - JsDoc styling - * - Media query check - */ - - - - - - -/* - * BEGIN JSDOC - */ - -/* Start menu */ -div.index { - position: fixed; - top: 0; - bottom: 0; - float: left; - width: 30%; - min-width: 100px; - max-width: 300px; - padding: 0 0 10px 0; - overflow: auto; -} - -div.index *.heading1 { - padding: 8px 0 0 0; -} - -div.index div.menu { - margin: 0 15px 0 -15px; - -moz-border-radius-bottomright: 15px; - -webkit-border-bottom-right-radius: 15px; - -border-bottom-right-radius: 15px; - padding: 15px 15px 15px 30px; - -moz-box-shadow: 0px 0px 10px #c4c4c4; - -webkit-box-shadow: 0px 0px 10px #c4c4c4; - box-shadow: 0px 0px 10px #c4c4c4; - background-color: rgba(255, 255, 255, 0.5); -} - -div.index div.indexLinks { - margin-top: 13px; - position: absolute; - right: 30px; -} - -div.index div.indexLinks a { - color: #999999; - text-transform: lowercase; -} - -div.index div.indexLinks a:first-child { - margin-right: 3px; - border-right: 1px solid #999999; - padding-right: 5px; -} - -div.index input.classFilter { - margin-bottom: 4px; - width: 100%; - border-width: 1px; - border-style: solid; - border-color: #CCCCCC #999999 #999999 #CCCCCC; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - -border-radius: 3px; -} - -div.index ul.classList a { - line-height: 1.3em; -} - -div.index ul.classList a + a { - margin-left: 0.5em; -} - -div.index div.fineprint { - margin: 1em 0 0 15px; - color: #777; - font-size: 0.9em; -} - -div.index div.fineprint a { - color: #777; -} - -div.indexStatic { - position: static; - min-height: 1em; -} -/* End menu */ - - -/* Start content */ -div.content { - float: left; - width: 70%; - min-width: 300px; - max-width: 600px; -} -div.innerContent { - padding: 0 0 0 2.5em; -} - -div.content ul, -div.content ol { - margin-bottom: 3em; -} - -div.content ul.methodDetail { - margin-bottom: 0; -} - -div.content *.classTitle { - position: relative; - left: -10px; - margin: -30px 0 15px 0; - -moz-border-radius: 15px; - -webkit-border-radius: 15px; - border-radius: 15px; - padding: 25px 15px 15px 15px; - background-color: #FFFFFF; - background-color: rgba(255, 255, 255, 0.5); - -moz-box-shadow: 0px 0px 10px #c4c4c4; - -webkit-box-shadow: 0px 0px 10px #c4c4c4; - box-shadow: 0px 0px 10px #c4c4c4; -} - -div.content div.intro { - margin: 15px 0 45px -} - -div.content p.summary { - margin-bottom: 0.5em; -} - -div.content ul.summary { - margin-bottom: 1.5em; -} - -div.content ul *.classname a, -div.content ul *.filename a { - font-family: Consolas, "Courier New", Courier, monospace; - text-decoration: none; - font-weight: bold; -} -div.content ul *.classname a:hover, -div.content ul *.filename a:hover { - text-decoration: underline; -} - -div.content div.props { - position: relative; - left: -10px; - margin-bottom: 2.5em; - padding: 10px 15px 15px 15px; - overflow: hidden; -} - -div.content div.hr { - margin: 0 10px 0 0; - height: 4em; -} - - - -table.summaryTable { - position: relative; - left: -10px; - width: 100%; - border-collapse: collapse; - box-sizing: content-box; - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; - -ms-box-sizing: content-box; - -o-box-sizing: content-box; - -icab-box-sizing: content-box; - -khtml-box-sizing: content-box; -} - -*.sectionTitle { - padding: 0 10px 10px 0; -} -caption.sectionTitle { - padding-left: 10px; -} - -table.summaryTable td, -table.summaryTable th { - padding: 0px 10px 10px 10px; -} -table.summaryTable tr:last-child td { - padding-bottom: 0; -} - -table.summaryTable td.attributes { - width: 35%; -} - -table.summaryTable td.nameDescription { - width: 65% -} - - - -dl.detailList { - margin-top: 0.5em; -} - -dl.detailList.nomargin + dl.detailList.nomargin { - margin-top: 0; -} - -dl.detailList dt { - display: inline; - margin-right: 5px; -} - -dl.detailList dt:before { - display: block; - content: ""; -} - -dl.detailList dd { - display: inline; -} - -dl.detailList.params dt { - display: block; -} -dl.detailList.params dd { - display: block; - padding-left: 2em; - padding-bottom: 0.4em; -} - - - - -ul.fileList li { - margin-bottom: 1.5em; -} - - - -.fixedFont.heading { - margin-bottom: 0.5em; -} - -pre.code { - margin: 10px 0 10px 0; - padding: 10px; - border: 1px solid #ccc; - -moz-border-radius: 2px; - -webkit-border-radius: 2px; - border-radius: 2px; -} -/* End content */ - -.clear { - clear: both; - width: 100%; - min-height: 0; -} - -/* - * END JSDOC - */ - - - - - - - -/* - * START MEDIA QUERY CHECK - */ - -.cssLoadCheck { - position: absolute; - top: -99999px; - left: -99999px; - border: 0; - width: 100px; - padding: 0; - overflow: hidden; -} - -/* - * END MEDIA QUERY CHECK - */ - diff --git a/jsdoc-toolkit/templates/codeview-igz/javascript/all.js b/jsdoc-toolkit/templates/codeview-igz/javascript/all.js deleted file mode 100644 index 5b6876a..0000000 --- a/jsdoc-toolkit/templates/codeview-igz/javascript/all.js +++ /dev/null @@ -1,326 +0,0 @@ -/** - * @fileOverview Contains standard code in the namespace 'wbos' and code specifically written for Codeview in the namespace 'codeview' - * @author Wouter Bos (www.thebrightlines.com) - * @since 1.0 - 2010-09-10 - * @version 1.0 - 2010-09-10 - */ - - - - - - -if (typeof(wbos) == "undefined") { - /** - * @namespace Standard code of Wouter Bos (wbos) - */ - wbos = {} -} -if (typeof(wbos.CssTools) == "undefined") { - /** - * @namespace Namespace for CSS-related functionality - */ - wbos.CssTools = {} -} - - - - -/** - * @namespace Fallback for CSS advanced media query - * @class - * @since 1.0 - 2010-09-10 - * @version 1.0 - 2010-09-10 - */ -wbos.CssTools.MediaQueryFallBack = ( function() { - var config = { - cssScreen: "/css/screen.css", - cssHandheld: "/css/handheld.css", - mobileMaxWidth: 660, - testDivClass: "cssLoadCheck", - dynamicCssLinkId: "DynCssLink", - resizeDelay: 30 - } - var noMediaQuery = false; - var delay; - var currentCssMediaType; - - // Adding events to elements in the DOM without overwriting it - function addEvent(element, newFunction, eventType) { - var oldEvent = eval("element." + eventType); - var eventContentType = eval("typeof element." + eventType) - - if ( eventContentType != 'function' ) { - eval("element." + eventType + " = newFunction") - } else { - eval("element." + eventType + " = function(e) { oldEvent(e); newFunction(e); }") - } - } - - // Get the the inner width of the browser window - function getWindowWidth() { - if (window.innerWidth) { - return window.innerWidth; - } else if (document.documentElement.clientWidth) { - return document.documentElement.clientWidth; - } else if (document.body.clientWidth) { - return document.body.clientWidth; - } else{ - return 0; - } - } - - function addCssLink(cssHref) { - var cssNode = document.createElement('link'); - var windowWidth; - cssNode.type = 'text/css'; - cssNode.rel = 'stylesheet'; - cssNode.media = 'screen, handheld, fallback'; - cssNode.href = cssHref; - document.getElementsByTagName("head")[0].appendChild(cssNode); - } - - - - /* Start public */ - return { - /** - * Adds link to CSS in the head if no CSS is loaded - * - * @since 1.0 - 2010-08-21 - * @version 1.0 - 2010-08-21 - * @param {String|Object} cssScreen URL to CSS file for larger screens - * @param {String|Object} cssHandheld URL to CSS file for smaller screens - * @param {Number} mobileMaxWidth Maximum width for handheld devices - * @example - * wbos.CssTools.MediaQueryFallBack.LoadCss(['screen.css', 'screen2.css'], 'mobile.css', 480) - */ - LoadCss: function(cssScreen, cssHandheld, mobileMaxWidth) { - // Set config values - if (typeof(cssScreen) != "undefined") { - config.cssScreen = cssScreen; - } - if (typeof(cssHandheld) != "undefined") { - config.cssHandheld = cssHandheld; - } - if (typeof(mobileMaxWidth) != "undefined") { - config.mobileMaxWidth = mobileMaxWidth; - } - - // Check if CSS is loaded - var cssloadCheckNode = document.createElement('div'); - cssloadCheckNode.className = config.testDivClass; - document.getElementsByTagName("body")[0].appendChild(cssloadCheckNode); - if (cssloadCheckNode.offsetWidth != 100 && noMediaQuery == false) { - noMediaQuery = true; - } - cssloadCheckNode.parentNode.removeChild(cssloadCheckNode) - - if (noMediaQuery == true) { - // Browser does not support Media Queries, so JavaScript will supply a fallback - var cssHref = ""; - - // Determines what CSS file to load - if (getWindowWidth() <= config.mobileMaxWidth) { - cssHref = config.cssHandheld; - newCssMediaType = "handheld"; - } else { - cssHref = config.cssScreen; - newCssMediaType = "screen"; - } - - // Add CSS link to of page - if (cssHref != "" && currentCssMediaType != newCssMediaType) { - var currentCssLinks = document.styleSheets - for (var i = 0; i < currentCssLinks.length; i++) { - for (var ii = 0; ii < currentCssLinks[i].media.length; ii++) { - if (typeof(currentCssLinks[i].media) == "object") { - if (currentCssLinks[i].media.item(ii) == "fallback") { - currentCssLinks[i].ownerNode.parentNode.removeChild(currentCssLinks[i].ownerNode) - i-- - break; - } - } else { - if (currentCssLinks[i].media.indexOf("fallback") >= 0) { - currentCssLinks[i].owningElement.parentNode.removeChild(currentCssLinks[i].owningElement) - i-- - break; - } - } - } - } - if (typeof(cssHref) == "object") { - for (var i = 0; i < cssHref.length; i++) { - addCssLink(cssHref[i]) - } - } else { - addCssLink(cssHref) - } - - currentCssMediaType = newCssMediaType; - } - - - // Check screen size again if user resizes window - addEvent(window, wbos.CssTools.MediaQueryFallBack.LoadCssDelayed, 'onresize') - } - }, - - /** - * Runs LoadCSS after a short delay - * - * @since 1.0 - 2010-08-21 - * @version 1.0 - 2010-08-21 - * @example - * wbos.CssTools.MediaQueryFallBack.LoadCssDelayed() - */ - LoadCssDelayed: function() { - clearTimeout(delay); - delay = setTimeout( "wbos.CssTools.MediaQueryFallBack.LoadCss()", config.resizeDelay) - } - - } - /* End public */ -})(); - - - - - - -/** - * @namespace Adds a function to an event of a single element. Use this if - * you don't want to use jQuery - * @class - * @since 1.0 - 2010-02-23 - * @version 1.0 - 2010-02-23 - */ -wbos.Events = ( function() { - /* Start public */ - return { - /** - * Adds a function to an event of a single element - * - * @since 1.0 - 2010-02-23 - * @version 1.0 - 2010-02-23 - * @param {Object} element The element on which the event is placed - * @param {Function} newFunction The function that has to be linked to the event - * @param {String} eventType Name of the event - * @example - * wbos.Events.AddEvent( document.getElementById('elementId'), functionName, "onclick" ) - */ - AddEvent: function( element, newFunction, eventType ) { - var oldEvent = eval("element." + eventType); - var eventContentType = eval("typeof element." + eventType) - - if ( eventContentType != 'function' ) { - eval("element." + eventType + " = newFunction") - } else { - eval("element." + eventType + " = function(e) { oldEvent(e); newFunction(e); }") - } - } - } - /* End public */ -})(); - - - - - - -if (typeof(codeview) == "undefined") { - /** - * @namespace Code written for the Codeview template - */ - codeview = {} -} - - - - - - - -/** - * @namespace Enables filtering in class lists - * @class - * @since 1.0 - 2010-11-08 - * @version 1.0 - 2010-11-08 - */ -codeview.classFilter = ( function() { - function onkeyup_ClassFilter() { - var listItems - var search = document.getElementById('ClassFilter').value - search = search.toLowerCase() - if (document.getElementById('ClassList')) { - listItems = document.getElementById('ClassList').getElementsByTagName('li') - filterList(listItems, search) - } - if (document.getElementById('ClassList2')) { - listItems = document.getElementById('ClassList2').getElementsByTagName('li') - filterList(listItems, search) - } - if (document.getElementById('FileList')) { - listItems = document.getElementById('FileList').getElementsByTagName('li') - filterList(listItems, search) - } - if (document.getElementById('MethodsListInherited')) { - var links = document.getElementById('MethodsListInherited').getElementsByTagName('a') - var linksSelected = new Array() - for (var i=0; i < links.length; i++) { - if (links[i].parentNode.parentNode.tagName == "DD") { - linksSelected.push(links[i]) - } - } - filterList(linksSelected, search) - } - if (document.getElementById('MethodsList')) { - listItems = document.getElementById('MethodsList').getElementsByTagName('tbody')[0].getElementsByTagName('tr') - filterList(listItems, search, document.getElementById('MethodDetail').getElementsByTagName('li')) - } - } - - function filterList(listItems, search, relatedElements) { - var itemContent = "" - for (var i=0; i < listItems.length; i++) { - itemContent = listItems[i].textContent||listItems[i].innerText - if (itemContent != undefined) { - itemContent = itemContent.toLowerCase() - itemContent = itemContent.replace(/\s/g, "") - if (itemContent.indexOf(search) >= 0 || itemContent == "") { - listItems[i].style.display = "" - } else { - listItems[i].style.display = "none" - } - if (relatedElements != null) { - filterRelatedList(listItems[i], search, relatedElements) - } - } - } - } - - function filterRelatedList(listItem, search, relatedElements) { - var itemIndex = parseInt(listItem.className.replace('item', '')) - if (itemIndex <= relatedElements.length) { - if (relatedElements[itemIndex].className == "item"+ itemIndex) { - relatedElements[itemIndex].style.display = listItem.style.display - } - } - } - - - - - - /* Start public */ - return { - Init: function() { - wbos.Events.AddEvent( - document.getElementById('ClassFilter'), - onkeyup_ClassFilter, - "onkeyup" - ) - } - } - /* End public */ -})(); diff --git a/jsdoc-toolkit/templates/codeview-igz/javascript/html5.js b/jsdoc-toolkit/templates/codeview-igz/javascript/html5.js deleted file mode 100644 index 3587bf7..0000000 --- a/jsdoc-toolkit/templates/codeview-igz/javascript/html5.js +++ /dev/null @@ -1,6 +0,0 @@ -// html5shiv MIT @rem remysharp.com/html5-enabling-script -// iepp v1.6.2 MIT @jon_neal iecss.com/print-protector -/*@cc_on(function(m,c){var z="abbr|article|aside|audio|canvas|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video";function n(d){for(var a=-1;++ai";if(g.childNodes.length!==1){var i=z.split("|"),o=i.length,s=RegExp("(^|\\s)("+z+")", -"gi"),t=RegExp("<(/*)("+z+")","gi"),u=RegExp("(^|[^\\n]*?\\s)("+z+")([^\\n]*)({[\\n\\w\\W]*?})","gi"),r=c.createDocumentFragment(),k=c.documentElement;g=k.firstChild;var h=c.createElement("body"),l=c.createElement("style"),f;n(c);n(r);g.insertBefore(l, -g.firstChild);l.media="print";m.attachEvent("onbeforeprint",function(){var d=-1,a=p(c.styleSheets,"all"),e=[],b;for(f=f||c.body;(b=u.exec(a))!=null;)e.push((b[1]+b[2]+b[3]).replace(s,"$1.iepp_$2")+b[4]);for(l.styleSheet.cssText=e.join("\n");++d122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), -l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, -q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, -q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, -"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), -a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} -for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], -"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], -H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], -J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ -I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), -["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", -/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), -["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", -hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= -!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p 1)? - lcAlias+"_"+filemapCounts[lcAlias] : lcAlias; - } - } - - // create each of the class pages - for (var i = 0, l = publish.classes.length; i < l; i++) { - var symbol = publish.classes[i]; - - symbol.events = symbol.getEvents(); // 1 order matters - symbol.methods = symbol.getMethods(); // 2 - - var output = ""; - output = classTemplate.process(symbol); - - IO.saveFile(publish.conf.outDir+publish.conf.symbolsDir, ((JSDOC.opt.u)? Link.filemap[symbol.alias] : symbol.alias) + publish.conf.ext, output); - } - - // create the class index page - try { - var classesindexTemplate = new JSDOC.JsPlate(publish.conf.templatesDir+"allclasses.tmpl"); - } - catch(e) { print(e.message); quit(); } - - var classesIndex = classesindexTemplate.process(publish.classes); - IO.saveFile(publish.conf.outDir, (JSDOC.opt.D.index=="files"?"allclasses":"index")+publish.conf.ext, classesIndex); - classesindexTemplate = classesIndex = classes = null; - - // create the file index page - try { - var fileindexTemplate = new JSDOC.JsPlate(publish.conf.templatesDir+"allfiles.tmpl"); - } - catch(e) { print(e.message); quit(); } - - var documentedFiles = symbols.filter(isaFile); // files that have file-level docs - var allFiles = []; // not all files have file-level docs, but we need to list every one - - for (var i = 0; i < files.length; i++) { - allFiles.push(new JSDOC.Symbol(files[i], [], "FILE", new JSDOC.DocComment("/** */"))); - } - - for (var i = 0; i < documentedFiles.length; i++) { - var offset = files.indexOf(documentedFiles[i].alias); - allFiles[offset] = documentedFiles[i]; - } - - allFiles = allFiles.sort(makeSortby("name")); - - // output the file index page - var filesIndex = fileindexTemplate.process(allFiles); - IO.saveFile(publish.conf.outDir, (JSDOC.opt.D.index=="files"?"index":"files")+publish.conf.ext, filesIndex); - fileindexTemplate = filesIndex = files = null; - - // copy static files - IO.copyFile(publish.conf.templatesDir+"/"+publish.conf.cssDir+"all.css", publish.conf.outDir+"/"+publish.conf.cssDir); - IO.copyFile(publish.conf.templatesDir+"/"+publish.conf.cssDir+"screen.css", publish.conf.outDir+"/"+publish.conf.cssDir); - IO.copyFile(publish.conf.templatesDir+"/"+publish.conf.cssDir+"handheld.css", publish.conf.outDir+"/"+publish.conf.cssDir); - IO.copyFile(publish.conf.templatesDir+"/"+publish.conf.cssDir+"prettify.css", publish.conf.outDir+"/"+publish.conf.cssDir); - IO.copyFile(publish.conf.templatesDir+"/"+publish.conf.jsDir+"all.js", publish.conf.outDir+"/"+publish.conf.jsDir); - IO.copyFile(publish.conf.templatesDir+"/"+publish.conf.jsDir+"html5.js", publish.conf.outDir+"/"+publish.conf.jsDir); - IO.copyFile(publish.conf.templatesDir+"/"+publish.conf.jsDir+"prettify.js", publish.conf.outDir+"/"+publish.conf.jsDir); - IO.copyFile(publish.conf.templatesDir+"/"+publish.conf.fontsDir+"mplus-1m-regular-webfont.eot", publish.conf.outDir+"/"+publish.conf.fontsDir); - IO.copyFile(publish.conf.templatesDir+"/"+publish.conf.fontsDir+"mplus-1m-regular-webfont.svg", publish.conf.outDir+"/"+publish.conf.fontsDir); - IO.copyFile(publish.conf.templatesDir+"/"+publish.conf.fontsDir+"mplus-1m-regular-webfont.ttf", publish.conf.outDir+"/"+publish.conf.fontsDir); - IO.copyFile(publish.conf.templatesDir+"/"+publish.conf.fontsDir+"mplus-1m-regular-webfont.woff", publish.conf.outDir+"/"+publish.conf.fontsDir); - IO.copyFile(publish.conf.templatesDir+"/"+publish.conf.fontsDir+"mplus-1m-bold-webfont.eot", publish.conf.outDir+"/"+publish.conf.fontsDir); - IO.copyFile(publish.conf.templatesDir+"/"+publish.conf.fontsDir+"mplus-1m-bold-webfont.svg", publish.conf.outDir+"/"+publish.conf.fontsDir); - IO.copyFile(publish.conf.templatesDir+"/"+publish.conf.fontsDir+"mplus-1m-bold-webfont.ttf", publish.conf.outDir+"/"+publish.conf.fontsDir); - IO.copyFile(publish.conf.templatesDir+"/"+publish.conf.fontsDir+"mplus-1m-bold-webfont.woff", publish.conf.outDir+"/"+publish.conf.fontsDir); } - -/** Include a sub-template in the current template, specifying a data object */ -function subtemplate(template, data) { - try { - return new JSDOC.JsPlate(publish.conf.templatesDir+template).process(data); - } - catch(e) { print(e.message); quit(); } -} - -/** Just the first sentence (up to a full stop). Should not break on dotted variable names. */ -function summarize(desc) { - if (typeof desc != "undefined") - return desc.match(/([\w\W]+?\.)[^a-z0-9_$]/i)? RegExp.$1 : desc; -} - -/** Make a symbol sorter by some attribute. */ -function makeSortby(attribute) { - return function(a, b) { - if (a[attribute] != undefined && b[attribute] != undefined) { - a = a[attribute].toLowerCase(); - b = b[attribute].toLowerCase(); - if (a < b) return -1; - if (a > b) return 1; - return 0; - } - } -} - -function wordwrapNamespace(classLink) { - var classText = classLink.match(/[^<>]+(?=[<])/) + ""; - var classTextNew = classText.replace(/\./g, " . ") + ""; - classLink = classLink.replace(/[^<>]+(?=[<])/, classTextNew); - return classLink; -} - -/** Pull in the contents of an external file at the given path. */ -function include(path) { - var path = publish.conf.templatesDir+path; - return IO.readFile(path); -} - -/** Turn a raw source file into a code-hilited page in the docs. */ -function makeSrcFile(path, srcDir, name) { - if (JSDOC.opt.s) return; - - if (!name) { - name = path.replace(/\.\.?[\\\/]/g, "").replace(/[\\\/]/g, "_"); - name = name.replace(/\:/g, "_"); - } - - var src = {path: path, name:name, charset: IO.encoding, hilited: ""}; - - if (defined(JSDOC.PluginManager)) { - JSDOC.PluginManager.run("onPublishSrc", src); - } - - if (src.hilited) { - IO.saveFile(srcDir, name+publish.conf.ext, src.hilited); - } -} - -/** Build output for displaying function parameters. */ -function makeSignature(params) { - if (!params) return "()"; - var signature = "(" - + - params.filter( - function($) { - return $.name.indexOf(".") == -1; // don't show config params in signature - } - ).map( - function($) { - return $.name; - } - ).join(", ") - + - ")"; - return signature; -} - -/** Find symbol {@link ...} strings in text and turn into html links */ -function resolveLinks(str, from) { - str = str.replace(/\{@link ([^}]+)\}/gi, - function(match, symbolName) { - symbolName = symbolName.trim(); - var index = symbolName.indexOf(' '); - if (index > 0) { - var label = symbolName.substring(index + 1); - symbolName = symbolName.substring(0, index); - return new Link().toSymbol(symbolName).withText(label); - } else { - return new Link().toSymbol(symbolName); - } - } - ); - return str; -} \ No newline at end of file diff --git a/jsdoc-toolkit/templates/codeview-igz/subtemplates/foot.tmpl b/jsdoc-toolkit/templates/codeview-igz/subtemplates/foot.tmpl deleted file mode 100644 index 27bc13f..0000000 --- a/jsdoc-toolkit/templates/codeview-igz/subtemplates/foot.tmpl +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/jsdoc-toolkit/templates/codeview-igz/subtemplates/head.tmpl b/jsdoc-toolkit/templates/codeview-igz/subtemplates/head.tmpl deleted file mode 100644 index 275d133..0000000 --- a/jsdoc-toolkit/templates/codeview-igz/subtemplates/head.tmpl +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - {+data.subtitle+} | <if test="JSDOC.opt.D.title">{+JSDOC.opt.D.title+}<else />JsDoc Reference</if> - - - - - - - - - - - - - - - - - - - - diff --git a/jsdoc-toolkit/templates/codeview-igz/subtemplates/menu.tmpl b/jsdoc-toolkit/templates/codeview-igz/subtemplates/menu.tmpl deleted file mode 100644 index 597e0e2..0000000 --- a/jsdoc-toolkit/templates/codeview-igz/subtemplates/menu.tmpl +++ /dev/null @@ -1,41 +0,0 @@ - - -
    diff --git a/libs/jquery-loader.js b/libs/jquery-loader.js new file mode 100644 index 0000000..e7356a1 --- /dev/null +++ b/libs/jquery-loader.js @@ -0,0 +1,14 @@ +(function() { + // Get any jquery=___ param from the query string. + var jqversion = location.search.match(/[?&]jquery=(.*?)(?=&|$)/); + var path; + if (jqversion) { + // A version was specified, load that version from code.jquery.com. + path = 'http://code.jquery.com/jquery-' + jqversion[1] + '.js'; + } else { + // No version was specified, load the local version. + path = '../libs/jquery/jquery.js'; + } + // This is the only time I'll ever use document.write, I promise! + document.write(''); +}()); diff --git a/libs/jquery/jquery.js b/libs/jquery/jquery.js new file mode 100644 index 0000000..3774ff9 --- /dev/null +++ b/libs/jquery/jquery.js @@ -0,0 +1,9404 @@ +/*! + * jQuery JavaScript Library v1.7.2 + * 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: Wed Mar 21 12:46:34 2012 -0700 + */ +(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.2", + + // 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"; + }, + + isWindow: function( obj ) { + return obj != null && obj == obj.window; + }, + + 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 ) { + if ( typeof data !== "string" || !data ) { + return null; + } + 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, fn, key, value, chainable, emptyGet, pass ) { + var exec, + bulk = key == null, + i = 0, + length = elems.length; + + // Sets many values + if ( key && typeof key === "object" ) { + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], 1, emptyGet, value ); + } + chainable = 1; + + // Sets one value + } else if ( value !== undefined ) { + // Optionally, function values get executed if exec is true + exec = pass === undefined && jQuery.isFunction( value ); + + if ( bulk ) { + // Bulk operations only iterate when executing function values + if ( exec ) { + exec = fn; + fn = function( elem, key, value ) { + return exec.call( jQuery( elem ), value ); + }; + + // Otherwise they run against the entire set + } else { + fn.call( elems, value ); + fn = null; + } + } + + if ( fn ) { + for (; i < length; i++ ) { + fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); + } + } + + chainable = 1; + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; + }, + + 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 was already fired + fired, + // 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 ]; + fired = true; + 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 !!fired; + } + }; + + 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, + 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, + pixelMargin: true + }; + + // jQuery.boxModel DEPRECATED in 1.3, use jQuery.support.boxModel instead + jQuery.boxModel = support.boxModel = (document.compatMode === "CSS1Compat"); + + // 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"); + + // #11217 - WebKit loses check when the name is after the checked attribute + input.setAttribute( "name", "t" ); + + 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 ); + + // 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 = div = input = null; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, outer, inner, table, td, offsetSupport, + marginDiv, conMarginTop, style, html, positionTopLeftWidthHeight, + paddingMarginBorderVisibility, paddingMarginBorder, + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + conMarginTop = 1; + paddingMarginBorder = "padding:0;margin:0;border:"; + positionTopLeftWidthHeight = "position:absolute;top:0;left:0;width:1px;height:1px;"; + paddingMarginBorderVisibility = paddingMarginBorder + "0;visibility:hidden;"; + style = "style='" + positionTopLeftWidthHeight + paddingMarginBorder + "5px solid #000;"; + html = "
    " + + "" + + "
    "; + + container = document.createElement("div"); + container.style.cssText = paddingMarginBorderVisibility + "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 ); + + // 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 ) { + div.innerHTML = ""; + 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; + } + + 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.innerHTML = ""; + div.style.width = div.style.padding = "1px"; + div.style.border = 0; + div.style.overflow = "hidden"; + div.style.display = "inline"; + div.style.zoom = 1; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 ); + + // Check if elements with layout shrink-wrap their children + // (IE 6 does this) + div.style.display = "block"; + div.style.overflow = "visible"; + div.innerHTML = "
    "; + support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); + } + + div.style.cssText = positionTopLeftWidthHeight + paddingMarginBorderVisibility; + 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 ); + + if ( window.getComputedStyle ) { + div.style.marginTop = "1%"; + support.pixelMargin = ( window.getComputedStyle( div, null ) || { marginTop: 0 } ).marginTop !== "1%"; + } + + if ( typeof container.style.zoom !== "undefined" ) { + container.style.zoom = 1; + } + + body.removeChild( container ); + marginDiv = 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, part, attr, name, l, + elem = this[0], + i = 0, + data = null; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + attr = elem.attributes; + for ( l = attr.length; i < l; i++ ) { + name = attr[i].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.substring(5) ); + + dataAttr( elem, name, data[ name ] ); + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + parts = key.split( ".", 2 ); + parts[1] = parts[1] ? "." + parts[1] : ""; + part = parts[1] + "!"; + + return jQuery.access( this, function( value ) { + + if ( value === undefined ) { + data = this.triggerHandler( "getData" + part, [ parts[0] ] ); + + // Try to fetch any internally stored data first + if ( data === undefined && elem ) { + data = jQuery.data( elem, key ); + data = dataAttr( elem, key, data ); + } + + return data === undefined && parts[1] ? + this.data( parts[0] ) : + data; + } + + parts[1] = value; + this.each(function() { + var self = jQuery( this ); + + self.triggerHandler( "setData" + part, parts ); + jQuery.data( this, key, value ); + self.triggerHandler( "changeData" + part, parts ); + }); + }, null, value, arguments.length > 1, null, false ); + }, + + 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 ) ? +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 ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + 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( object ); + } +}); + + + + +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, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + 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.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + 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.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // 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, isBool, + 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; + isBool = rboolean.test( name ); + + // See #9699 for explanation of this approach (setting first, then removal) + // Do not do this for boolean attributes (see #10870) + if ( !isBool ) { + jQuery.attr( elem, name, "" ); + } + elem.removeAttribute( getSetAttribute ? name : propName ); + + // Set corresponding property to false for boolean attributes + if ( isBool && 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, + coords: 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 = /(?:^|\s)hover(\.\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; + selector = handleObjIn.selector; + } + + // 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: selector && 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, + special = jQuery.event.special[ event.type ] || {}, + 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; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers that should run if there are delegated events + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && !(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 ) { + + // Don't process events on disabled elements (#6911, #8165) + if ( cur.disabled !== true ) { + 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(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + 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 ) { + event._submit_bubble = true; + }); + form._submit_attached = true; + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + 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" ) { // && selector != null + // ( types-Object, data ) + 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( 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.origType + "." + handleObj.namespace : handleObj.origType, + 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 || nodeType === 11 ) { + // 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; + + /* falls through */ + 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) ); +} +// Expose origPOS +// "global" as in regardless of relation to brackets/parens +Expr.match.globalPOS = origPOS; + +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.globalPOS, + // 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|bdi|canvas|data|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 = /
    - -
    -
    - Powered by Intelygenz
    - Generated on: - {! - var date = new Date(); - var minutes = date.getMinutes() +""; - if (minutes.length == 1) { - minutes = '0'+ minutes; - } - var timeHuman = date.getFullYear() + "-" + date.getMonth() + "-" + date.getDate() + " " + date.getHours() + ":" + minutes; - var timeData = date.getFullYear() + "-" + date.getMonth() + "-" + date.getDate(); - output += ""; - !} -
    -
    -

    ", "
    " ], + 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 + + + + + + + + + + +

    Iris Test Suite

    +

    +
    +

    +
      +
      + lame test markup + normal test markup + awesome test markup +
      + + diff --git a/test/iris_test.js b/test/iris_test.js new file mode 100644 index 0000000..9e0adee --- /dev/null +++ b/test/iris_test.js @@ -0,0 +1,98 @@ +/*global QUnit:false, module:false, test:false, asyncTest:false, expect:false*/ +/*global start:false, stop:false ok:false, equal:false, notEqual:false, deepEqual:false*/ +/*global notDeepEqual:false, strictEqual:false, notStrictEqual:false, raises:false*/ +(function($) { + + /* + ======== A Handy Little QUnit Reference ======== + http://docs.jquery.com/QUnit + + Test methods: + expect(numAssertions) + stop(increment) + start(decrement) + Test assertions: + ok(value, [message]) + equal(actual, expected, [message]) + notEqual(actual, expected, [message]) + deepEqual(actual, expected, [message]) + notDeepEqual(actual, expected, [message]) + strictEqual(actual, expected, [message]) + notStrictEqual(actual, expected, [message]) + raises(block, [expected], [message]) + */ + + /*module('jQuery#awesome', { + setup: function() { + this.elems = $('#qunit-fixture').children(); + } + }); + + test('is chainable', 1, function() { + // Not a bad test to run on collection methods. + strictEqual(this.elems.awesome(), this.elems, 'should be chaninable'); + }); + + test('is awesome', 1, function() { + strictEqual(this.elems.awesome().text(), 'awesomeawesomeawesome', 'should be thoroughly awesome'); + }); + + module('jQuery.awesome'); + + test('is awesome', 1, function() { + strictEqual($.awesome(), 'awesome', 'should be thoroughly awesome'); + }); + + module(':awesome selector', { + setup: function() { + this.elems = $('#qunit-fixture').children(); + } + }); + + test('is awesome', 1, function() { + // Use deepEqual & .get() when comparing jQuery objects. + deepEqual(this.elems.filter(':awesome').get(), this.elems.last().get(), 'knows awesome when it sees it'); + }); + + module('jQuery#awesome', { + setup: function() { + //this.elems = $('#qunit-fixture').children(); + } + });*/ + + + test( "Iris lang load", function() { + + iris.lang.Load("es-ES", {TEST:{LABEL:"VALUE"}}); + + var translated = iris.lang.Get("TEST.LABEL"); + strictEqual( translated, "VALUE", "Should get a lang value" ); + + iris.lang.Locale("en-US"); + translated = iris.lang.Get("TEST.LABEL"); + strictEqual( translated, "??TEST.LABEL??", "Should get a non created value" ); + + }); + + test( "Iris date format", function() { + + var date = "1331954654564"; + var formatted = iris.util.DateFormat(date, "d/m/y h:i:s"); + strictEqual( formatted, "17/03/12 04:24:14", "Custom DateFormat" ); + }); + + test( "Iris currency format", function() { + + var amount = 1234.56; + iris.lang.Locale("es-ES"); + formatted = iris.util.Currency(amount); + strictEqual( formatted, "1.234,56", "Currency Spanish Format" ); + + + iris.lang.Locale("en-US"); + formatted = iris.util.Currency(amount); + strictEqual( formatted, "1,234.56", "Currency USA Format" ); + + }); + +}(jQuery));