From 9c5283e86727a44953cd3a6fcfd545c4364e8d1b Mon Sep 17 00:00:00 2001 From: Milad Karbasizadeh Date: Wed, 30 Apr 2014 17:36:48 +0430 Subject: [PATCH] Start news project --- Sevomin.News/404.cshtml | 15 + Sevomin.News/Global.asax | 23 + Sevomin.News/Index.cshtml | 59 + Sevomin.News/Web.config | 121 + Sevomin.News/app_code/code/Blog.cs | 212 + Sevomin.News/app_code/code/Comment.cs | 118 + Sevomin.News/app_code/code/Post.cs | 76 + Sevomin.News/app_code/code/Storage.cs | 178 + .../app_code/handlers/CommentHandler.cs | 187 + Sevomin.News/app_code/handlers/FeedHandler.cs | 59 + .../app_code/handlers/MetaWeblogHandler.cs | 188 + .../app_code/handlers/MinifyHandler.cs | 60 + Sevomin.News/app_code/handlers/PostHandler.cs | 117 + Sevomin.News/css/admin.css | 94 + Sevomin.News/css/bootstrap-theme.min.css | 1 + Sevomin.News/css/bootstrap.min.css | 839 ++ Sevomin.News/favicon.ico | Bin 0 -> 32038 bytes Sevomin.News/fonts/BKoodakBold.eot | Bin 0 -> 56832 bytes Sevomin.News/fonts/BKoodakBold.ttf | Bin 0 -> 56632 bytes Sevomin.News/fonts/BKoodakBold.woff | Bin 0 -> 24152 bytes Sevomin.News/fonts/WebYekan.eot | Bin 0 -> 25317 bytes Sevomin.News/fonts/WebYekan.svg | 612 + Sevomin.News/fonts/WebYekan.ttf | Bin 0 -> 49416 bytes Sevomin.News/fonts/WebYekan.woff | Bin 0 -> 29012 bytes .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20335 bytes .../fonts/glyphicons-halflings-regular.svg | 229 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 41280 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23320 bytes Sevomin.News/images/revert-logo.png | Bin 0 -> 4760 bytes Sevomin.News/packages.config | 10 + .../05e94568-232b-42d2-81c1-d4bf5ef46b5d.xml | 14 + .../504c5b77-1965-476b-8405-0e47db1309d1.xml | 14 + .../9fa751db-c036-435b-97e3-bd6373b0991b.xml | 61 + Sevomin.News/scripts/_references.js | 5 + Sevomin.News/scripts/admin.js | 226 + Sevomin.News/scripts/bootstrap-wysiwyg.js | 217 + Sevomin.News/scripts/comments.js | 271 + .../scripts/jquery-2.0.2.intellisense.js | 2670 ++++ Sevomin.News/scripts/jquery-2.0.2.js | 8842 ++++++++++++ Sevomin.News/themes/Sevomin/Comment.cshtml | 46 + Sevomin.News/themes/Sevomin/Post.cshtml | 109 + Sevomin.News/themes/Sevomin/_Layout.cshtml | 119 + Sevomin.News/themes/Sevomin/common.css | 106 + Sevomin.News/themes/Sevomin/site.css | 247 + Sevomin.News/views/AdminMenu.cshtml | 78 + Sevomin.News/views/CommentForm.cshtml | 38 + Sevomin.News/views/Login.cshtml | 59 + Sevomin.News/views/Robots/RSD.cshtml | 14 + Sevomin.News/views/Robots/Robots.cshtml | 8 + Sevomin.News/views/Robots/Sitemap.cshtml | 15 + Sevomin.News/wlwmanifest.xml | 28 + Sevomin.sln | 26 + .../AjaxMin.5.8.5172.27710.nupkg | Bin 0 -> 992875 bytes .../lib/net20/AjaxMin.dll | Bin 0 -> 511488 bytes .../lib/net35/AjaxMin.dll | Bin 0 -> 505856 bytes .../lib/net40/AjaxMin.dll | Bin 0 -> 516096 bytes .../tools/net35/AjaxMin.dll | Bin 0 -> 505856 bytes .../tools/net35/AjaxMin.targets | 38 + .../tools/net35/AjaxMinTask.dll | Bin 0 -> 53760 bytes .../tools/net40/AjaxMin.dll | Bin 0 -> 516096 bytes .../tools/net40/AjaxMin.targets | 38 + .../tools/net40/AjaxMinTask.dll | Bin 0 -> 53760 bytes .../AjaxMin.5.9.5229.26438.nupkg | Bin 0 -> 1000043 bytes .../lib/net20/AjaxMin.dll | Bin 0 -> 514560 bytes .../lib/net35/AjaxMin.dll | Bin 0 -> 509440 bytes .../lib/net40/AjaxMin.dll | Bin 0 -> 520192 bytes .../tools/net35/AjaxMin.dll | Bin 0 -> 509440 bytes .../tools/net35/AjaxMin.targets | 38 + .../tools/net35/AjaxMinTask.dll | Bin 0 -> 53760 bytes .../tools/net40/AjaxMin.dll | Bin 0 -> 520192 bytes .../tools/net40/AjaxMin.targets | 38 + .../tools/net40/AjaxMinTask.dll | Bin 0 -> 53760 bytes .../DotNetOpenAuth.AspNet.4.1.4.12333.nupkg | Bin 0 -> 60926 bytes .../lib/net40-full/DotNetOpenAuth.AspNet.dll | Bin 0 -> 40960 bytes .../lib/net40-full/DotNetOpenAuth.AspNet.xml | 1740 +++ .../lib/net45-full/DotNetOpenAuth.AspNet.dll | Bin 0 -> 40960 bytes .../lib/net45-full/DotNetOpenAuth.AspNet.xml | 1740 +++ .../DotNetOpenAuth.Core.4.1.4.12333.nupkg | Bin 0 -> 321121 bytes .../lib/net40-full/DotNetOpenAuth.Core.dll | Bin 0 -> 227328 bytes .../lib/net40-full/DotNetOpenAuth.Core.xml | 10192 ++++++++++++++ .../lib/net45-full/DotNetOpenAuth.Core.dll | Bin 0 -> 227328 bytes .../lib/net45-full/DotNetOpenAuth.Core.xml | 10192 ++++++++++++++ ...tOpenAuth.OAuth.Consumer.4.1.4.12333.nupkg | Bin 0 -> 27374 bytes .../DotNetOpenAuth.OAuth.Consumer.dll | Bin 0 -> 17920 bytes .../DotNetOpenAuth.OAuth.Consumer.xml | 397 + .../DotNetOpenAuth.OAuth.Consumer.dll | Bin 0 -> 17920 bytes .../DotNetOpenAuth.OAuth.Consumer.xml | 397 + ...otNetOpenAuth.OAuth.Core.4.1.4.12333.nupkg | Bin 0 -> 72351 bytes .../lib/net40-full/DotNetOpenAuth.OAuth.dll | Bin 0 -> 55808 bytes .../lib/net40-full/DotNetOpenAuth.OAuth.xml | 1858 +++ .../lib/net45-full/DotNetOpenAuth.OAuth.dll | Bin 0 -> 55808 bytes .../lib/net45-full/DotNetOpenAuth.OAuth.xml | 1858 +++ ...tNetOpenAuth.OpenId.Core.4.1.4.12333.nupkg | Bin 0 -> 365342 bytes .../lib/net40-full/DotNetOpenAuth.OpenId.dll | Bin 0 -> 268288 bytes .../lib/net40-full/DotNetOpenAuth.OpenId.xml | 10788 +++++++++++++++ .../lib/net45-full/DotNetOpenAuth.OpenId.dll | Bin 0 -> 268288 bytes .../lib/net45-full/DotNetOpenAuth.OpenId.xml | 10788 +++++++++++++++ ...Auth.OpenId.RelyingParty.4.1.4.12333.nupkg | Bin 0 -> 133176 bytes .../DotNetOpenAuth.OpenId.RelyingParty.dll | Bin 0 -> 89600 bytes .../DotNetOpenAuth.OpenId.RelyingParty.xml | 3568 +++++ .../DotNetOpenAuth.OpenId.RelyingParty.dll | Bin 0 -> 89600 bytes .../DotNetOpenAuth.OpenId.RelyingParty.xml | 3568 +++++ .../Microsoft.AspNet.Razor.2.0.20715.0.nupkg | Bin 0 -> 127166 bytes .../lib/net40/System.Web.Razor.dll | Bin 0 -> 266888 bytes .../lib/net40/System.Web.Razor.xml | 4359 ++++++ .../Microsoft.AspNet.Razor.3.1.2.nupkg | Bin 0 -> 148907 bytes .../lib/net45/System.Web.Razor.dll | Bin 0 -> 271056 bytes .../lib/net45/System.Web.Razor.xml | 5738 ++++++++ ...rosoft.AspNet.Web.Optimization.1.0.0.nupkg | Bin 0 -> 37353 bytes .../lib/net40/System.Web.Optimization.dll | Bin 0 -> 54912 bytes ...icrosoft.AspNet.WebPages.2.0.20710.0.nupkg | Bin 0 -> 280391 bytes .../lib/net40/System.Web.Helpers.dll | Bin 0 -> 138352 bytes .../lib/net40/System.Web.Helpers.xml | 833 ++ .../net40/System.Web.WebPages.Deployment.dll | Bin 0 -> 41048 bytes .../net40/System.Web.WebPages.Deployment.xml | 41 + .../lib/net40/System.Web.WebPages.Razor.dll | Bin 0 -> 39536 bytes .../lib/net40/System.Web.WebPages.Razor.xml | 224 + .../lib/net40/System.Web.WebPages.dll | Bin 0 -> 204400 bytes .../lib/net40/System.Web.WebPages.xml | 2624 ++++ .../Content/Web.config.install.xdt | 41 + .../Content/Web.config.uninstall.xdt | 13 + .../Microsoft.AspNet.WebPages.3.1.2.nupkg | Bin 0 -> 228304 bytes .../lib/net45/System.Web.Helpers.dll | Bin 0 -> 139984 bytes .../lib/net45/System.Web.Helpers.xml | 836 ++ .../net45/System.Web.WebPages.Deployment.dll | Bin 0 -> 41680 bytes .../net45/System.Web.WebPages.Deployment.xml | 60 + .../lib/net45/System.Web.WebPages.Razor.dll | Bin 0 -> 39632 bytes .../lib/net45/System.Web.WebPages.Razor.xml | 292 + .../lib/net45/System.Web.WebPages.dll | Bin 0 -> 211664 bytes .../lib/net45/System.Web.WebPages.xml | 2688 ++++ ...oft.AspNet.WebPages.Data.2.0.20710.0.nupkg | Bin 0 -> 23700 bytes .../lib/net40/WebMatrix.Data.dll | Bin 0 -> 37976 bytes .../lib/net40/WebMatrix.Data.xml | 173 + ...ft.AspNet.WebPages.OAuth.2.0.20710.0.nupkg | Bin 0 -> 23304 bytes .../net40/Microsoft.Web.WebPages.OAuth.dll | Bin 0 -> 29296 bytes .../net40/Microsoft.Web.WebPages.OAuth.xml | 115 + ....AspNet.WebPages.WebData.2.0.20710.0.nupkg | Bin 0 -> 50900 bytes .../lib/net40/WebMatrix.WebData.dll | Bin 0 -> 74840 bytes .../lib/net40/WebMatrix.WebData.xml | 791 ++ .../Content/web.config.transform | 8 + ...crosoft.SqlServer.Compact.4.0.8876.1.nupkg | Bin 0 -> 2610211 bytes .../Microsoft.VC90.CRT.manifest | 6 + .../amd64/Microsoft.VC90.CRT/README_ENU.txt | Bin 0 -> 406 bytes .../amd64/Microsoft.VC90.CRT/msvcr90.dll | Bin 0 -> 624448 bytes .../NativeBinaries/amd64/sqlceca40.dll | Bin 0 -> 463584 bytes .../NativeBinaries/amd64/sqlcecompact40.dll | Bin 0 -> 106720 bytes .../NativeBinaries/amd64/sqlceer40EN.dll | Bin 0 -> 154848 bytes .../NativeBinaries/amd64/sqlceme40.dll | Bin 0 -> 81120 bytes .../NativeBinaries/amd64/sqlceqp40.dll | Bin 0 -> 909536 bytes .../NativeBinaries/amd64/sqlcese40.dll | Bin 0 -> 561888 bytes .../Microsoft.VC90.CRT.manifest | 6 + .../x86/Microsoft.VC90.CRT/README_ENU.txt | Bin 0 -> 406 bytes .../x86/Microsoft.VC90.CRT/msvcr90.dll | Bin 0 -> 653120 bytes .../NativeBinaries/x86/sqlceca40.dll | Bin 0 -> 349920 bytes .../NativeBinaries/x86/sqlcecompact40.dll | Bin 0 -> 90848 bytes .../NativeBinaries/x86/sqlceer40EN.dll | Bin 0 -> 154336 bytes .../NativeBinaries/x86/sqlceme40.dll | Bin 0 -> 67296 bytes .../NativeBinaries/x86/sqlceqp40.dll | Bin 0 -> 642784 bytes .../NativeBinaries/x86/sqlcese40.dll | Bin 0 -> 406240 bytes .../SQLCE_EULA_ENU.rtf | 774 ++ .../lib/net40/System.Data.SqlServerCe.dll | Bin 0 -> 470240 bytes .../Scripts/jquery.validate.unobtrusive.js | 367 + .../jquery.validate.unobtrusive.min.js | 5 + ...y.Unobtrusive.Validation.2.0.30116.0.nupkg | Bin 0 -> 8771 bytes .../Content/Scripts/modernizr-2.6.2.js | 1416 ++ .../Modernizr.2.6.2/Modernizr.2.6.2.nupkg | Bin 0 -> 21425 bytes packages/Modernizr.2.6.2/Tools/common.ps1 | 75 + packages/Modernizr.2.6.2/Tools/install.ps1 | 12 + packages/Modernizr.2.6.2/Tools/uninstall.ps1 | 6 + .../WebGrease.1.3.0/WebGrease.1.3.0.nupkg | Bin 0 -> 773379 bytes .../WebGrease.1.3.0/lib/Antlr3.Runtime.dll | Bin 0 -> 105544 bytes packages/WebGrease.1.3.0/lib/WebGrease.dll | Bin 0 -> 1054792 bytes .../Content/Scripts/jquery-1.8.2-vsdoc.js | 7025 ++++++++++ .../Content/Scripts/jquery-1.8.2.js | 9454 +++++++++++++ .../Content/Scripts/jquery-1.8.2.min.js | 19 + packages/jQuery.1.8.2/Tools/common.ps1 | 117 + packages/jQuery.1.8.2/Tools/install.ps1 | 41 + .../Tools/jquery-1.8.2.intellisense.js | 2508 ++++ packages/jQuery.1.8.2/Tools/uninstall.ps1 | 41 + packages/jQuery.1.8.2/jQuery.1.8.2.nupkg | Bin 0 -> 187181 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../base/images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../base/images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../base/images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes .../base/images/ui-icons_888888_256x240.png | Bin 0 -> 4369 bytes .../base/images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../Content/Content/themes/base/jquery-ui.css | 464 + .../themes/base/jquery.ui.accordion.css | 19 + .../Content/themes/base/jquery.ui.all.css | 11 + .../themes/base/jquery.ui.autocomplete.css | 53 + .../Content/themes/base/jquery.ui.base.css | 21 + .../Content/themes/base/jquery.ui.button.css | 38 + .../Content/themes/base/jquery.ui.core.css | 38 + .../themes/base/jquery.ui.datepicker.css | 66 + .../Content/themes/base/jquery.ui.dialog.css | 21 + .../themes/base/jquery.ui.progressbar.css | 11 + .../themes/base/jquery.ui.resizable.css | 20 + .../themes/base/jquery.ui.selectable.css | 10 + .../Content/themes/base/jquery.ui.slider.css | 24 + .../Content/themes/base/jquery.ui.tabs.css | 18 + .../Content/themes/base/jquery.ui.theme.css | 247 + .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_888888_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../themes/base/minified/jquery-ui.min.css | 5 + .../base/minified/jquery.ui.accordion.min.css | 5 + .../minified/jquery.ui.autocomplete.min.css | 5 + .../base/minified/jquery.ui.button.min.css | 5 + .../base/minified/jquery.ui.core.min.css | 5 + .../minified/jquery.ui.datepicker.min.css | 5 + .../base/minified/jquery.ui.dialog.min.css | 5 + .../minified/jquery.ui.progressbar.min.css | 5 + .../base/minified/jquery.ui.resizable.min.css | 5 + .../minified/jquery.ui.selectable.min.css | 5 + .../base/minified/jquery.ui.slider.min.css | 5 + .../base/minified/jquery.ui.tabs.min.css | 5 + .../base/minified/jquery.ui.theme.min.css | 5 + .../Content/Scripts/jquery-ui-1.8.24.js | 11395 ++++++++++++++++ .../Content/Scripts/jquery-ui-1.8.24.min.js | 23 + .../Tools/common.ps1 | 75 + .../Tools/install.ps1 | 12 + .../Tools/uninstall.ps1 | 6 + .../jQuery.UI.Combined.1.8.24.nupkg | Bin 0 -> 229386 bytes .../Content/Scripts/jquery.validate-vsdoc.js | 1307 ++ .../Content/Scripts/jquery.validate.js | 1262 ++ .../Content/Scripts/jquery.validate.min.js | 18 + .../jQuery.Validation.1.10.0.nupkg | Bin 0 -> 33701 bytes .../Content/Scripts/knockout-2.2.0.debug.js | 3591 +++++ .../Content/Scripts/knockout-2.2.0.js | 99 + .../knockoutjs.2.2.0/knockoutjs.2.2.0.nupkg | Bin 0 -> 61189 bytes packages/repositories.config | 1 + .../net20/CookComputing.XmlRpcServerV2.dll | Bin 0 -> 34816 bytes .../xmlrpcnet-server.3.0.0.266.nupkg | Bin 0 -> 21281 bytes .../lib/net20/CookComputing.XmlRpcV2.dll | Bin 0 -> 122880 bytes .../lib/sl3-wp/CookComputing.XmlRpcPhone.dll | Bin 0 -> 81920 bytes .../sl4/CookComputing.XmlRpcSilverlight.dll | Bin 0 -> 91136 bytes .../xmlrpcnet.3.0.0.266.nupkg | Bin 0 -> 154699 bytes 254 files changed, 133272 insertions(+) create mode 100644 Sevomin.News/404.cshtml create mode 100644 Sevomin.News/Global.asax create mode 100644 Sevomin.News/Index.cshtml create mode 100644 Sevomin.News/Web.config create mode 100644 Sevomin.News/app_code/code/Blog.cs create mode 100644 Sevomin.News/app_code/code/Comment.cs create mode 100644 Sevomin.News/app_code/code/Post.cs create mode 100644 Sevomin.News/app_code/code/Storage.cs create mode 100644 Sevomin.News/app_code/handlers/CommentHandler.cs create mode 100644 Sevomin.News/app_code/handlers/FeedHandler.cs create mode 100644 Sevomin.News/app_code/handlers/MetaWeblogHandler.cs create mode 100644 Sevomin.News/app_code/handlers/MinifyHandler.cs create mode 100644 Sevomin.News/app_code/handlers/PostHandler.cs create mode 100644 Sevomin.News/css/admin.css create mode 100644 Sevomin.News/css/bootstrap-theme.min.css create mode 100644 Sevomin.News/css/bootstrap.min.css create mode 100644 Sevomin.News/favicon.ico create mode 100644 Sevomin.News/fonts/BKoodakBold.eot create mode 100644 Sevomin.News/fonts/BKoodakBold.ttf create mode 100644 Sevomin.News/fonts/BKoodakBold.woff create mode 100644 Sevomin.News/fonts/WebYekan.eot create mode 100644 Sevomin.News/fonts/WebYekan.svg create mode 100644 Sevomin.News/fonts/WebYekan.ttf create mode 100644 Sevomin.News/fonts/WebYekan.woff create mode 100644 Sevomin.News/fonts/glyphicons-halflings-regular.eot create mode 100644 Sevomin.News/fonts/glyphicons-halflings-regular.svg create mode 100644 Sevomin.News/fonts/glyphicons-halflings-regular.ttf create mode 100644 Sevomin.News/fonts/glyphicons-halflings-regular.woff create mode 100644 Sevomin.News/images/revert-logo.png create mode 100644 Sevomin.News/packages.config create mode 100644 Sevomin.News/posts/05e94568-232b-42d2-81c1-d4bf5ef46b5d.xml create mode 100644 Sevomin.News/posts/504c5b77-1965-476b-8405-0e47db1309d1.xml create mode 100644 Sevomin.News/posts/files/9fa751db-c036-435b-97e3-bd6373b0991b.xml create mode 100644 Sevomin.News/scripts/_references.js create mode 100644 Sevomin.News/scripts/admin.js create mode 100644 Sevomin.News/scripts/bootstrap-wysiwyg.js create mode 100644 Sevomin.News/scripts/comments.js create mode 100644 Sevomin.News/scripts/jquery-2.0.2.intellisense.js create mode 100644 Sevomin.News/scripts/jquery-2.0.2.js create mode 100644 Sevomin.News/themes/Sevomin/Comment.cshtml create mode 100644 Sevomin.News/themes/Sevomin/Post.cshtml create mode 100644 Sevomin.News/themes/Sevomin/_Layout.cshtml create mode 100644 Sevomin.News/themes/Sevomin/common.css create mode 100644 Sevomin.News/themes/Sevomin/site.css create mode 100644 Sevomin.News/views/AdminMenu.cshtml create mode 100644 Sevomin.News/views/CommentForm.cshtml create mode 100644 Sevomin.News/views/Login.cshtml create mode 100644 Sevomin.News/views/Robots/RSD.cshtml create mode 100644 Sevomin.News/views/Robots/Robots.cshtml create mode 100644 Sevomin.News/views/Robots/Sitemap.cshtml create mode 100644 Sevomin.News/wlwmanifest.xml create mode 100644 packages/AjaxMin.5.8.5172.27710/AjaxMin.5.8.5172.27710.nupkg create mode 100644 packages/AjaxMin.5.8.5172.27710/lib/net20/AjaxMin.dll create mode 100644 packages/AjaxMin.5.8.5172.27710/lib/net35/AjaxMin.dll create mode 100644 packages/AjaxMin.5.8.5172.27710/lib/net40/AjaxMin.dll create mode 100644 packages/AjaxMin.5.8.5172.27710/tools/net35/AjaxMin.dll create mode 100644 packages/AjaxMin.5.8.5172.27710/tools/net35/AjaxMin.targets create mode 100644 packages/AjaxMin.5.8.5172.27710/tools/net35/AjaxMinTask.dll create mode 100644 packages/AjaxMin.5.8.5172.27710/tools/net40/AjaxMin.dll create mode 100644 packages/AjaxMin.5.8.5172.27710/tools/net40/AjaxMin.targets create mode 100644 packages/AjaxMin.5.8.5172.27710/tools/net40/AjaxMinTask.dll create mode 100644 packages/AjaxMin.5.9.5229.26438/AjaxMin.5.9.5229.26438.nupkg create mode 100644 packages/AjaxMin.5.9.5229.26438/lib/net20/AjaxMin.dll create mode 100644 packages/AjaxMin.5.9.5229.26438/lib/net35/AjaxMin.dll create mode 100644 packages/AjaxMin.5.9.5229.26438/lib/net40/AjaxMin.dll create mode 100644 packages/AjaxMin.5.9.5229.26438/tools/net35/AjaxMin.dll create mode 100644 packages/AjaxMin.5.9.5229.26438/tools/net35/AjaxMin.targets create mode 100644 packages/AjaxMin.5.9.5229.26438/tools/net35/AjaxMinTask.dll create mode 100644 packages/AjaxMin.5.9.5229.26438/tools/net40/AjaxMin.dll create mode 100644 packages/AjaxMin.5.9.5229.26438/tools/net40/AjaxMin.targets create mode 100644 packages/AjaxMin.5.9.5229.26438/tools/net40/AjaxMinTask.dll create mode 100644 packages/DotNetOpenAuth.AspNet.4.1.4.12333/DotNetOpenAuth.AspNet.4.1.4.12333.nupkg create mode 100644 packages/DotNetOpenAuth.AspNet.4.1.4.12333/lib/net40-full/DotNetOpenAuth.AspNet.dll create mode 100644 packages/DotNetOpenAuth.AspNet.4.1.4.12333/lib/net40-full/DotNetOpenAuth.AspNet.xml create mode 100644 packages/DotNetOpenAuth.AspNet.4.1.4.12333/lib/net45-full/DotNetOpenAuth.AspNet.dll create mode 100644 packages/DotNetOpenAuth.AspNet.4.1.4.12333/lib/net45-full/DotNetOpenAuth.AspNet.xml create mode 100644 packages/DotNetOpenAuth.Core.4.1.4.12333/DotNetOpenAuth.Core.4.1.4.12333.nupkg create mode 100644 packages/DotNetOpenAuth.Core.4.1.4.12333/lib/net40-full/DotNetOpenAuth.Core.dll create mode 100644 packages/DotNetOpenAuth.Core.4.1.4.12333/lib/net40-full/DotNetOpenAuth.Core.xml create mode 100644 packages/DotNetOpenAuth.Core.4.1.4.12333/lib/net45-full/DotNetOpenAuth.Core.dll create mode 100644 packages/DotNetOpenAuth.Core.4.1.4.12333/lib/net45-full/DotNetOpenAuth.Core.xml create mode 100644 packages/DotNetOpenAuth.OAuth.Consumer.4.1.4.12333/DotNetOpenAuth.OAuth.Consumer.4.1.4.12333.nupkg create mode 100644 packages/DotNetOpenAuth.OAuth.Consumer.4.1.4.12333/lib/net40-full/DotNetOpenAuth.OAuth.Consumer.dll create mode 100644 packages/DotNetOpenAuth.OAuth.Consumer.4.1.4.12333/lib/net40-full/DotNetOpenAuth.OAuth.Consumer.xml create mode 100644 packages/DotNetOpenAuth.OAuth.Consumer.4.1.4.12333/lib/net45-full/DotNetOpenAuth.OAuth.Consumer.dll create mode 100644 packages/DotNetOpenAuth.OAuth.Consumer.4.1.4.12333/lib/net45-full/DotNetOpenAuth.OAuth.Consumer.xml create mode 100644 packages/DotNetOpenAuth.OAuth.Core.4.1.4.12333/DotNetOpenAuth.OAuth.Core.4.1.4.12333.nupkg create mode 100644 packages/DotNetOpenAuth.OAuth.Core.4.1.4.12333/lib/net40-full/DotNetOpenAuth.OAuth.dll create mode 100644 packages/DotNetOpenAuth.OAuth.Core.4.1.4.12333/lib/net40-full/DotNetOpenAuth.OAuth.xml create mode 100644 packages/DotNetOpenAuth.OAuth.Core.4.1.4.12333/lib/net45-full/DotNetOpenAuth.OAuth.dll create mode 100644 packages/DotNetOpenAuth.OAuth.Core.4.1.4.12333/lib/net45-full/DotNetOpenAuth.OAuth.xml create mode 100644 packages/DotNetOpenAuth.OpenId.Core.4.1.4.12333/DotNetOpenAuth.OpenId.Core.4.1.4.12333.nupkg create mode 100644 packages/DotNetOpenAuth.OpenId.Core.4.1.4.12333/lib/net40-full/DotNetOpenAuth.OpenId.dll create mode 100644 packages/DotNetOpenAuth.OpenId.Core.4.1.4.12333/lib/net40-full/DotNetOpenAuth.OpenId.xml create mode 100644 packages/DotNetOpenAuth.OpenId.Core.4.1.4.12333/lib/net45-full/DotNetOpenAuth.OpenId.dll create mode 100644 packages/DotNetOpenAuth.OpenId.Core.4.1.4.12333/lib/net45-full/DotNetOpenAuth.OpenId.xml create mode 100644 packages/DotNetOpenAuth.OpenId.RelyingParty.4.1.4.12333/DotNetOpenAuth.OpenId.RelyingParty.4.1.4.12333.nupkg create mode 100644 packages/DotNetOpenAuth.OpenId.RelyingParty.4.1.4.12333/lib/net40-full/DotNetOpenAuth.OpenId.RelyingParty.dll create mode 100644 packages/DotNetOpenAuth.OpenId.RelyingParty.4.1.4.12333/lib/net40-full/DotNetOpenAuth.OpenId.RelyingParty.xml create mode 100644 packages/DotNetOpenAuth.OpenId.RelyingParty.4.1.4.12333/lib/net45-full/DotNetOpenAuth.OpenId.RelyingParty.dll create mode 100644 packages/DotNetOpenAuth.OpenId.RelyingParty.4.1.4.12333/lib/net45-full/DotNetOpenAuth.OpenId.RelyingParty.xml create mode 100644 packages/Microsoft.AspNet.Razor.2.0.20715.0/Microsoft.AspNet.Razor.2.0.20715.0.nupkg create mode 100644 packages/Microsoft.AspNet.Razor.2.0.20715.0/lib/net40/System.Web.Razor.dll create mode 100644 packages/Microsoft.AspNet.Razor.2.0.20715.0/lib/net40/System.Web.Razor.xml create mode 100644 packages/Microsoft.AspNet.Razor.3.1.2/Microsoft.AspNet.Razor.3.1.2.nupkg create mode 100644 packages/Microsoft.AspNet.Razor.3.1.2/lib/net45/System.Web.Razor.dll create mode 100644 packages/Microsoft.AspNet.Razor.3.1.2/lib/net45/System.Web.Razor.xml create mode 100644 packages/Microsoft.AspNet.Web.Optimization.1.0.0/Microsoft.AspNet.Web.Optimization.1.0.0.nupkg create mode 100644 packages/Microsoft.AspNet.Web.Optimization.1.0.0/lib/net40/System.Web.Optimization.dll create mode 100644 packages/Microsoft.AspNet.WebPages.2.0.20710.0/Microsoft.AspNet.WebPages.2.0.20710.0.nupkg create mode 100644 packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.Helpers.dll create mode 100644 packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.Helpers.xml create mode 100644 packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.WebPages.Deployment.dll create mode 100644 packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.WebPages.Deployment.xml create mode 100644 packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.WebPages.Razor.dll create mode 100644 packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.WebPages.Razor.xml create mode 100644 packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.WebPages.dll create mode 100644 packages/Microsoft.AspNet.WebPages.2.0.20710.0/lib/net40/System.Web.WebPages.xml create mode 100644 packages/Microsoft.AspNet.WebPages.3.1.2/Content/Web.config.install.xdt create mode 100644 packages/Microsoft.AspNet.WebPages.3.1.2/Content/Web.config.uninstall.xdt create mode 100644 packages/Microsoft.AspNet.WebPages.3.1.2/Microsoft.AspNet.WebPages.3.1.2.nupkg create mode 100644 packages/Microsoft.AspNet.WebPages.3.1.2/lib/net45/System.Web.Helpers.dll create mode 100644 packages/Microsoft.AspNet.WebPages.3.1.2/lib/net45/System.Web.Helpers.xml create mode 100644 packages/Microsoft.AspNet.WebPages.3.1.2/lib/net45/System.Web.WebPages.Deployment.dll create mode 100644 packages/Microsoft.AspNet.WebPages.3.1.2/lib/net45/System.Web.WebPages.Deployment.xml create mode 100644 packages/Microsoft.AspNet.WebPages.3.1.2/lib/net45/System.Web.WebPages.Razor.dll create mode 100644 packages/Microsoft.AspNet.WebPages.3.1.2/lib/net45/System.Web.WebPages.Razor.xml create mode 100644 packages/Microsoft.AspNet.WebPages.3.1.2/lib/net45/System.Web.WebPages.dll create mode 100644 packages/Microsoft.AspNet.WebPages.3.1.2/lib/net45/System.Web.WebPages.xml create mode 100644 packages/Microsoft.AspNet.WebPages.Data.2.0.20710.0/Microsoft.AspNet.WebPages.Data.2.0.20710.0.nupkg create mode 100644 packages/Microsoft.AspNet.WebPages.Data.2.0.20710.0/lib/net40/WebMatrix.Data.dll create mode 100644 packages/Microsoft.AspNet.WebPages.Data.2.0.20710.0/lib/net40/WebMatrix.Data.xml create mode 100644 packages/Microsoft.AspNet.WebPages.OAuth.2.0.20710.0/Microsoft.AspNet.WebPages.OAuth.2.0.20710.0.nupkg create mode 100644 packages/Microsoft.AspNet.WebPages.OAuth.2.0.20710.0/lib/net40/Microsoft.Web.WebPages.OAuth.dll create mode 100644 packages/Microsoft.AspNet.WebPages.OAuth.2.0.20710.0/lib/net40/Microsoft.Web.WebPages.OAuth.xml create mode 100644 packages/Microsoft.AspNet.WebPages.WebData.2.0.20710.0/Microsoft.AspNet.WebPages.WebData.2.0.20710.0.nupkg create mode 100644 packages/Microsoft.AspNet.WebPages.WebData.2.0.20710.0/lib/net40/WebMatrix.WebData.dll create mode 100644 packages/Microsoft.AspNet.WebPages.WebData.2.0.20710.0/lib/net40/WebMatrix.WebData.xml create mode 100644 packages/Microsoft.SqlServer.Compact.4.0.8876.1/Content/web.config.transform create mode 100644 packages/Microsoft.SqlServer.Compact.4.0.8876.1/Microsoft.SqlServer.Compact.4.0.8876.1.nupkg create mode 100644 packages/Microsoft.SqlServer.Compact.4.0.8876.1/NativeBinaries/amd64/Microsoft.VC90.CRT/Microsoft.VC90.CRT.manifest create mode 100644 packages/Microsoft.SqlServer.Compact.4.0.8876.1/NativeBinaries/amd64/Microsoft.VC90.CRT/README_ENU.txt create mode 100644 packages/Microsoft.SqlServer.Compact.4.0.8876.1/NativeBinaries/amd64/Microsoft.VC90.CRT/msvcr90.dll create mode 100644 packages/Microsoft.SqlServer.Compact.4.0.8876.1/NativeBinaries/amd64/sqlceca40.dll create mode 100644 packages/Microsoft.SqlServer.Compact.4.0.8876.1/NativeBinaries/amd64/sqlcecompact40.dll create mode 100644 packages/Microsoft.SqlServer.Compact.4.0.8876.1/NativeBinaries/amd64/sqlceer40EN.dll create mode 100644 packages/Microsoft.SqlServer.Compact.4.0.8876.1/NativeBinaries/amd64/sqlceme40.dll create mode 100644 packages/Microsoft.SqlServer.Compact.4.0.8876.1/NativeBinaries/amd64/sqlceqp40.dll create mode 100644 packages/Microsoft.SqlServer.Compact.4.0.8876.1/NativeBinaries/amd64/sqlcese40.dll create mode 100644 packages/Microsoft.SqlServer.Compact.4.0.8876.1/NativeBinaries/x86/Microsoft.VC90.CRT/Microsoft.VC90.CRT.manifest create mode 100644 packages/Microsoft.SqlServer.Compact.4.0.8876.1/NativeBinaries/x86/Microsoft.VC90.CRT/README_ENU.txt create mode 100644 packages/Microsoft.SqlServer.Compact.4.0.8876.1/NativeBinaries/x86/Microsoft.VC90.CRT/msvcr90.dll create mode 100644 packages/Microsoft.SqlServer.Compact.4.0.8876.1/NativeBinaries/x86/sqlceca40.dll create mode 100644 packages/Microsoft.SqlServer.Compact.4.0.8876.1/NativeBinaries/x86/sqlcecompact40.dll create mode 100644 packages/Microsoft.SqlServer.Compact.4.0.8876.1/NativeBinaries/x86/sqlceer40EN.dll create mode 100644 packages/Microsoft.SqlServer.Compact.4.0.8876.1/NativeBinaries/x86/sqlceme40.dll create mode 100644 packages/Microsoft.SqlServer.Compact.4.0.8876.1/NativeBinaries/x86/sqlceqp40.dll create mode 100644 packages/Microsoft.SqlServer.Compact.4.0.8876.1/NativeBinaries/x86/sqlcese40.dll create mode 100644 packages/Microsoft.SqlServer.Compact.4.0.8876.1/SQLCE_EULA_ENU.rtf create mode 100644 packages/Microsoft.SqlServer.Compact.4.0.8876.1/lib/net40/System.Data.SqlServerCe.dll create mode 100644 packages/Microsoft.jQuery.Unobtrusive.Validation.2.0.30116.0/Content/Scripts/jquery.validate.unobtrusive.js create mode 100644 packages/Microsoft.jQuery.Unobtrusive.Validation.2.0.30116.0/Content/Scripts/jquery.validate.unobtrusive.min.js create mode 100644 packages/Microsoft.jQuery.Unobtrusive.Validation.2.0.30116.0/Microsoft.jQuery.Unobtrusive.Validation.2.0.30116.0.nupkg create mode 100644 packages/Modernizr.2.6.2/Content/Scripts/modernizr-2.6.2.js create mode 100644 packages/Modernizr.2.6.2/Modernizr.2.6.2.nupkg create mode 100644 packages/Modernizr.2.6.2/Tools/common.ps1 create mode 100644 packages/Modernizr.2.6.2/Tools/install.ps1 create mode 100644 packages/Modernizr.2.6.2/Tools/uninstall.ps1 create mode 100644 packages/WebGrease.1.3.0/WebGrease.1.3.0.nupkg create mode 100644 packages/WebGrease.1.3.0/lib/Antlr3.Runtime.dll create mode 100644 packages/WebGrease.1.3.0/lib/WebGrease.dll create mode 100644 packages/jQuery.1.8.2/Content/Scripts/jquery-1.8.2-vsdoc.js create mode 100644 packages/jQuery.1.8.2/Content/Scripts/jquery-1.8.2.js create mode 100644 packages/jQuery.1.8.2/Content/Scripts/jquery-1.8.2.min.js create mode 100644 packages/jQuery.1.8.2/Tools/common.ps1 create mode 100644 packages/jQuery.1.8.2/Tools/install.ps1 create mode 100644 packages/jQuery.1.8.2/Tools/jquery-1.8.2.intellisense.js create mode 100644 packages/jQuery.1.8.2/Tools/uninstall.ps1 create mode 100644 packages/jQuery.1.8.2/jQuery.1.8.2.nupkg create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-icons_222222_256x240.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-icons_2e83ff_256x240.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-icons_454545_256x240.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-icons_888888_256x240.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/images/ui-icons_cd0a0a_256x240.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery-ui.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.accordion.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.all.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.autocomplete.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.base.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.button.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.core.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.datepicker.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.dialog.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.progressbar.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.resizable.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.selectable.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.slider.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.tabs.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/jquery.ui.theme.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-icons_222222_256x240.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-icons_2e83ff_256x240.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-icons_454545_256x240.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-icons_888888_256x240.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/images/ui-icons_cd0a0a_256x240.png create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery-ui.min.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery.ui.accordion.min.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery.ui.autocomplete.min.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery.ui.button.min.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery.ui.core.min.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery.ui.datepicker.min.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery.ui.dialog.min.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery.ui.progressbar.min.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery.ui.resizable.min.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery.ui.selectable.min.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery.ui.slider.min.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery.ui.tabs.min.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Content/themes/base/minified/jquery.ui.theme.min.css create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Scripts/jquery-ui-1.8.24.js create mode 100644 packages/jQuery.UI.Combined.1.8.24/Content/Scripts/jquery-ui-1.8.24.min.js create mode 100644 packages/jQuery.UI.Combined.1.8.24/Tools/common.ps1 create mode 100644 packages/jQuery.UI.Combined.1.8.24/Tools/install.ps1 create mode 100644 packages/jQuery.UI.Combined.1.8.24/Tools/uninstall.ps1 create mode 100644 packages/jQuery.UI.Combined.1.8.24/jQuery.UI.Combined.1.8.24.nupkg create mode 100644 packages/jQuery.Validation.1.10.0/Content/Scripts/jquery.validate-vsdoc.js create mode 100644 packages/jQuery.Validation.1.10.0/Content/Scripts/jquery.validate.js create mode 100644 packages/jQuery.Validation.1.10.0/Content/Scripts/jquery.validate.min.js create mode 100644 packages/jQuery.Validation.1.10.0/jQuery.Validation.1.10.0.nupkg create mode 100644 packages/knockoutjs.2.2.0/Content/Scripts/knockout-2.2.0.debug.js create mode 100644 packages/knockoutjs.2.2.0/Content/Scripts/knockout-2.2.0.js create mode 100644 packages/knockoutjs.2.2.0/knockoutjs.2.2.0.nupkg create mode 100644 packages/xmlrpcnet-server.3.0.0.266/lib/net20/CookComputing.XmlRpcServerV2.dll create mode 100644 packages/xmlrpcnet-server.3.0.0.266/xmlrpcnet-server.3.0.0.266.nupkg create mode 100644 packages/xmlrpcnet.3.0.0.266/lib/net20/CookComputing.XmlRpcV2.dll create mode 100644 packages/xmlrpcnet.3.0.0.266/lib/sl3-wp/CookComputing.XmlRpcPhone.dll create mode 100644 packages/xmlrpcnet.3.0.0.266/lib/sl4/CookComputing.XmlRpcSilverlight.dll create mode 100644 packages/xmlrpcnet.3.0.0.266/xmlrpcnet.3.0.0.266.nupkg diff --git a/Sevomin.News/404.cshtml b/Sevomin.News/404.cshtml new file mode 100644 index 0000000..9502b6b --- /dev/null +++ b/Sevomin.News/404.cshtml @@ -0,0 +1,15 @@ +@{ + Page.Title = "The page does not exist"; + Layout = "~/themes/" + Blog.Theme + "/_Layout.cshtml"; + Response.StatusCode = 404; +} + +
+

The page doesn't exist

+ +

Sorry about that.

+ +

+ Go to the front page +

+
\ No newline at end of file diff --git a/Sevomin.News/Global.asax b/Sevomin.News/Global.asax new file mode 100644 index 0000000..89e6f1a --- /dev/null +++ b/Sevomin.News/Global.asax @@ -0,0 +1,23 @@ +<%@ Application Language="C#" %> + + diff --git a/Sevomin.News/Index.cshtml b/Sevomin.News/Index.cshtml new file mode 100644 index 0000000..2ff19ae --- /dev/null +++ b/Sevomin.News/Index.cshtml @@ -0,0 +1,59 @@ +@using System.Web.Caching; +@{ + Page.Title = Blog.Title; + Layout = "~/themes/" + Blog.Theme + "/_Layout.cshtml"; + DateTime lastModified = DateTime.MinValue; + + if (string.IsNullOrEmpty(Blog.CurrentSlug)) + { + Page.ShowPaging = true; + var posts = Blog.GetPosts(Blog.PostsPerPage); + + foreach (var post in posts) + { + @RenderPage("~/themes/" + Blog.Theme + "/Post.cshtml", post); + } + + if (posts.Any()) + { + lastModified = posts.Max(p => p.LastModified); + } + + Response.AddCacheItemDependency("posts"); + Response.Cache.VaryByParams["page"] = true; + Response.Cache.VaryByParams["category"] = true; + } + else + { + Post post = Blog.IsNewPost ? new Post() : Blog.CurrentPost; + + if (Blog.IsNewPost && !User.Identity.IsAuthenticated) + { + FormsAuthentication.RedirectToLoginPage(); + } + + if (post == null) { throw new HttpException(404, "Post not found"); } + + Page.Title = post.Title; + lastModified = post.LastModified; + + Response.AddCacheDependency(new CacheDependency(Server.MapPath("~/posts/" + post.ID + ".xml"))); + + @RenderPage("~/themes/" + Blog.Theme + "/Post.cshtml", post) + } + + if (!Request.IsLocal) + { + Response.Cache.AppendCacheExtension("max-age=0"); + Response.Cache.SetValidUntilExpires(true); + Response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate); + Response.Cache.SetVaryByCustom("authenticated"); + Response.Cache.VaryByParams["slug"] = true; + Response.AddCacheDependency(new CacheDependency(Server.MapPath("~/"))); + Response.AddCacheDependency(new CacheDependency(Server.MapPath("~/scripts"))); + Response.AddCacheDependency(new CacheDependency(Server.MapPath("~/css"))); + Response.AddCacheDependency(new CacheDependency(Server.MapPath("~/themes/" + Blog.Theme))); + + Blog.SetConditionalGetHeaders(lastModified, Context); + } +} \ No newline at end of file diff --git a/Sevomin.News/Web.config b/Sevomin.News/Web.config new file mode 100644 index 0000000..da216e1 --- /dev/null +++ b/Sevomin.News/Web.config @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Sevomin.News/app_code/code/Blog.cs b/Sevomin.News/app_code/code/Blog.cs new file mode 100644 index 0000000..e5a86ee --- /dev/null +++ b/Sevomin.News/app_code/code/Blog.cs @@ -0,0 +1,212 @@ +using System; +using System.Collections.Generic; +using System.Configuration; +using System.IO; +using System.Linq; +using System.Web; +using System.Web.Caching; +using System.Web.Hosting; + +public static class Blog +{ + static Blog() + { + Theme = ConfigurationManager.AppSettings.Get("blog:theme"); + Title = ConfigurationManager.AppSettings.Get("blog:name"); + Description = ConfigurationManager.AppSettings.Get("blog:description"); + PostsPerPage = int.Parse(ConfigurationManager.AppSettings.Get("blog:postsPerPage")); + DaysToComment = int.Parse(ConfigurationManager.AppSettings.Get("blog:daysToComment")); + Image = ConfigurationManager.AppSettings.Get("blog:image"); + ModerateComments = bool.Parse(ConfigurationManager.AppSettings.Get("blog:moderateComments")); + } + + public static string Title { get; private set; } + public static string Description { get; private set; } + public static string Theme { get; private set; } + public static string Image { get; private set; } + public static int PostsPerPage { get; private set; } + public static int DaysToComment { get; private set; } + public static bool ModerateComments { get; private set; } + + public static int UniqueId + { + get { return FingerPrint("/web.config").GetHashCode(); } + } + + public static string CurrentSlug + { + get { return (HttpContext.Current.Request.QueryString["slug"] ?? string.Empty).Trim().ToLowerInvariant(); } + } + + public static string CurrentCategory + { + get { return (HttpContext.Current.Request.QueryString["category"] ?? string.Empty).Trim().ToLowerInvariant(); } + } + + public static bool IsNewPost + { + get { return HttpContext.Current.Request.RawUrl.Trim('/') == "post/new"; } + } + + public static Post CurrentPost + { + get + { + if (HttpContext.Current.Items["currentpost"] == null && !string.IsNullOrEmpty(CurrentSlug)) + { + var post = Storage.GetAllPosts().FirstOrDefault(p => p.Slug == CurrentSlug); + + if (post != null && (post.IsPublished || HttpContext.Current.User.Identity.IsAuthenticated)) + HttpContext.Current.Items["currentpost"] = Storage.GetAllPosts().FirstOrDefault(p => p.Slug == CurrentSlug); + } + + return HttpContext.Current.Items["currentpost"] as Post; + } + } + + public static string GetNextPage() + { + if (!string.IsNullOrEmpty(CurrentSlug)) + { + var current = Storage.GetAllPosts().IndexOf(CurrentPost); + if (current > 0) + return Storage.GetAllPosts()[current - 1].Url.ToString(); + } + else if (CurrentPage > 1) + { + return GetPagingUrl(-1); + } + + return null; + } + + public static string GetPrevPage() + { + if (!string.IsNullOrEmpty(CurrentSlug)) + { + var current = Storage.GetAllPosts().IndexOf(CurrentPost); + if (current > -1) + return Storage.GetAllPosts()[current + 1].Url.ToString(); + } + else + { + return GetPagingUrl(1); + } + + return null; + } + + public static int CurrentPage + { + get + { + int page = 0; + if (int.TryParse(HttpContext.Current.Request.QueryString["page"], out page)) + return page; + + return 1; + } + } + + public static IEnumerable GetPosts(int postsPerPage = 0) + { + var posts = from p in Storage.GetAllPosts() + where (p.IsPublished && p.PubDate <= DateTime.UtcNow) || HttpContext.Current.User.Identity.IsAuthenticated + select p; + + string category = HttpContext.Current.Request.QueryString["category"]; + + if (!string.IsNullOrEmpty(category)) + { + posts = posts.Where(p => p.Categories.Any(c => string.Equals(c, category, StringComparison.OrdinalIgnoreCase))); + } + + if (postsPerPage > 0) + { + posts = posts.Skip(postsPerPage * (CurrentPage - 1)).Take(postsPerPage); + } + + return posts; + } + + public static bool MatchesUniqueId(HttpContext context) + { + int token; + return int.TryParse(context.Request.Form["token"], out token) && token == Blog.UniqueId; + } + + public static string SaveFileToDisk(byte[] bytes, string extension) + { + string relative = "~/posts/files/" + Guid.NewGuid() + "." + extension.Trim('.'); + string file = HostingEnvironment.MapPath(relative); + + File.WriteAllBytes(file, bytes); + + var cruncher = new ImageCruncher.Cruncher(); + cruncher.CrunchImages(file); + + return VirtualPathUtility.ToAbsolute(relative); + } + + public static string GetPagingUrl(int move) + { + string url = "/page/{0}/"; + string category = HttpContext.Current.Request.QueryString["category"]; + + if (!string.IsNullOrEmpty(category)) + { + url = "/category/" + HttpUtility.UrlEncode(category.ToLowerInvariant()) + "/" + url; + } + + string relative = string.Format("~" + url, Blog.CurrentPage + move); + return VirtualPathUtility.ToAbsolute(relative); + } + + public static string FingerPrint(string rootRelativePath, string cdnPath = "") + { + if (!string.IsNullOrEmpty(cdnPath) && !HttpContext.Current.IsDebuggingEnabled) + { + return cdnPath; + } + + if (HttpRuntime.Cache[rootRelativePath] == null) + { + string relative = VirtualPathUtility.ToAbsolute("~" + rootRelativePath); + string absolute = HostingEnvironment.MapPath(relative); + + if (!File.Exists(absolute)) + { + throw new FileNotFoundException("File not found", absolute); + } + + DateTime date = File.GetLastWriteTime(absolute); + int index = relative.LastIndexOf('/'); + + string result = relative.Insert(index, "/v-" + date.Ticks); + + HttpRuntime.Cache.Insert(rootRelativePath, result, new CacheDependency(absolute)); + } + + return HttpRuntime.Cache[rootRelativePath] as string; + } + + public static void SetConditionalGetHeaders(DateTime lastModified, HttpContextBase context) + { + HttpResponseBase response = context.Response; + HttpRequestBase request = context.Request; + lastModified = new DateTime(lastModified.Year, lastModified.Month, lastModified.Day, lastModified.Hour, lastModified.Minute, lastModified.Second); + + string incomingDate = request.Headers["If-Modified-Since"]; + + response.Cache.SetLastModified(lastModified); + + DateTime testDate = DateTime.MinValue; + + if (DateTime.TryParse(incomingDate, out testDate) && testDate == lastModified) + { + response.ClearContent(); + response.StatusCode = (int)System.Net.HttpStatusCode.NotModified; + response.SuppressContent = true; + } + } +} \ No newline at end of file diff --git a/Sevomin.News/app_code/code/Comment.cs b/Sevomin.News/app_code/code/Comment.cs new file mode 100644 index 0000000..6549b81 --- /dev/null +++ b/Sevomin.News/app_code/code/Comment.cs @@ -0,0 +1,118 @@ +using System; +using System.Globalization; +using System.Text.RegularExpressions; +using System.Web.Security; + +public class Comment +{ + private static readonly Regex _linkRegex = new Regex("((http://|https://|www\\.)([A-Z0-9.\\-]{1,})\\.[0-9A-Z?;~&%\\(\\)#,=\\-_\\./\\+]{2,}[0-9A-Z?~&%#=\\-_/\\+])", RegexOptions.Compiled | RegexOptions.IgnoreCase); + private const string Link = "{2}"; + + public Comment() + { + ID = Guid.NewGuid().ToString(); + PubDate = DateTime.UtcNow; + } + + public string ID { get; set; } + public string Author { get; set; } + public string Email { get; set; } + public string Website { get; set; } + public string Content { get; set; } + public DateTime PubDate { get; set; } + public string Ip { get; set; } + public string UserAgent { get; set; } + public bool IsAdmin { get; set; } + public bool IsApproved { get; set; } + + public string GravatarUrl(int size) + { + var hash = FormsAuthentication.HashPasswordForStoringInConfigFile(Email.ToLowerInvariant(), "MD5").ToLower(); + + return string.Format("http://gravatar.com/avatar/{0}?s={1}&d=mm", hash, size); + } + + public string ContentWithLinks() + { + return _linkRegex.Replace(Content, new MatchEvaluator(Evaluator)); + } + + private static string Evaluator(Match match) + { + var info = CultureInfo.InvariantCulture; + return string.Format(info, Link, !match.Value.Contains("://") ? "http://" : string.Empty, match.Value, ShortenUrl(match.Value, 50)); + } + + private static string ShortenUrl(string url, int max) + { + if (url.Length <= max) + { + return url; + } + + // Remove the protocal + var startIndex = url.IndexOf("://"); + if (startIndex > -1) + { + url = url.Substring(startIndex + 3); + } + + if (url.Length <= max) + { + return url; + } + + // Compress folder structure + var firstIndex = url.IndexOf("/") + 1; + var lastIndex = url.LastIndexOf("/"); + if (firstIndex < lastIndex) + { + url = url.Remove(firstIndex, lastIndex - firstIndex); + url = url.Insert(firstIndex, "..."); + } + + if (url.Length <= max) + { + return url; + } + + // Remove URL parameters + var queryIndex = url.IndexOf("?"); + if (queryIndex > -1) + { + url = url.Substring(0, queryIndex); + } + + if (url.Length <= max) + { + return url; + } + + // Remove URL fragment + var fragmentIndex = url.IndexOf("#"); + if (fragmentIndex > -1) + { + url = url.Substring(0, fragmentIndex); + } + + if (url.Length <= max) + { + return url; + } + + // Compress page + firstIndex = url.LastIndexOf("/") + 1; + lastIndex = url.LastIndexOf("."); + if (lastIndex - firstIndex > 10) + { + var page = url.Substring(firstIndex, lastIndex - firstIndex); + var length = url.Length - max + 3; + if (page.Length > length) + { + url = url.Replace(page, string.Format("...{0}", page.Substring(length))); + } + } + + return url; + } +} \ No newline at end of file diff --git a/Sevomin.News/app_code/code/Post.cs b/Sevomin.News/app_code/code/Post.cs new file mode 100644 index 0000000..910642b --- /dev/null +++ b/Sevomin.News/app_code/code/Post.cs @@ -0,0 +1,76 @@ +using CookComputing.XmlRpc; +using System; +using System.Linq; +using System.Collections.Generic; +using System.Web; + +[XmlRpcMissingMapping(MappingAction.Ignore)] +public class Post +{ + public Post() + { + ID = Guid.NewGuid().ToString(); + Title = "My new post"; + Author = HttpContext.Current.User.Identity.Name; + Content = "the content"; + PubDate = DateTime.UtcNow; + LastModified = DateTime.UtcNow; + Categories = new string[0]; + Comments = new List(); + IsPublished = true; + } + + [XmlRpcMember("postid")] + public string ID { get; set; } + + [XmlRpcMember("title")] + public string Title { get; set; } + + [XmlRpcMember("author")] + public string Author { get; set; } + + [XmlRpcMember("wp_slug")] + public string Slug { get; set; } + + [XmlRpcMember("description")] + public string Content { get; set; } + + [XmlRpcMember("dateCreated")] + public DateTime PubDate { get; set; } + + [XmlRpcMember("dateModified")] + public DateTime LastModified { get; set; } + + public bool IsPublished { get; set; } + + [XmlRpcMember("categories")] + public string[] Categories { get; set; } + public List Comments { get; private set; } + + public Uri AbsoluteUrl + { + get + { + Uri requestUrl = HttpContext.Current.Request.Url; + return new Uri(requestUrl.Scheme + "://" + requestUrl.Authority + Url, UriKind.Absolute); + } + } + + public Uri Url + { + get + { + return new Uri(VirtualPathUtility.ToAbsolute("~/post/" + Slug), UriKind.Relative); + } + } + + public bool AreCommentsOpen(HttpContextBase context) + { + return PubDate > DateTime.UtcNow.AddDays(-Blog.DaysToComment) || context.User.Identity.IsAuthenticated; + } + + public int CountApprovedComments(HttpContextBase context) + { + return (Blog.ModerateComments && !context.User.Identity.IsAuthenticated) ? this.Comments.Count(c => c.IsApproved) : this.Comments.Count; + } +} \ No newline at end of file diff --git a/Sevomin.News/app_code/code/Storage.cs b/Sevomin.News/app_code/code/Storage.cs new file mode 100644 index 0000000..481be97 --- /dev/null +++ b/Sevomin.News/app_code/code/Storage.cs @@ -0,0 +1,178 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Web; +using System.Web.Hosting; +using System.Xml.Linq; +using System.Xml.XPath; + +public static class Storage +{ + private static string _folder = HostingEnvironment.MapPath("~/posts/"); + + public static List GetAllPosts() + { + if (HttpRuntime.Cache["posts"] == null) + LoadPosts(); + + if (HttpRuntime.Cache["posts"] != null) + { + return (List)HttpRuntime.Cache["posts"]; + } + return new List(); + } + + public static void Save(Post post) + { + string file = Path.Combine(_folder, post.ID + ".xml"); + post.LastModified = DateTime.UtcNow; + + XDocument doc = new XDocument( + new XElement("post", + new XElement("title", post.Title), + new XElement("slug", post.Slug), + new XElement("author", post.Author), + new XElement("pubDate", post.PubDate.ToString("yyyy-MM-dd HH:mm:ss")), + new XElement("lastModified", post.LastModified.ToString("yyyy-MM-dd HH:mm:ss")), + new XElement("content", post.Content), + new XElement("ispublished", post.IsPublished), + new XElement("categories", string.Empty), + new XElement("comments", string.Empty) + )); + + XElement categories = doc.XPathSelectElement("post/categories"); + foreach (string category in post.Categories) + { + categories.Add(new XElement("category", category)); + } + + XElement comments = doc.XPathSelectElement("post/comments"); + foreach (Comment comment in post.Comments) + { + comments.Add( + new XElement("comment", + new XElement("author", comment.Author), + new XElement("email", comment.Email), + new XElement("website", comment.Website), + new XElement("ip", comment.Ip), + new XElement("userAgent", comment.UserAgent), + new XElement("date", comment.PubDate.ToString("yyyy-MM-dd HH:m:ss")), + new XElement("content", comment.Content), + new XAttribute("isAdmin", comment.IsAdmin), + new XAttribute("isApproved", comment.IsApproved), + new XAttribute("id", comment.ID) + )); + } + + if (!File.Exists(file)) // New post + { + var posts = GetAllPosts(); + posts.Insert(0, post); + posts.Sort((p1, p2) => p2.PubDate.CompareTo(p1.PubDate)); + HttpRuntime.Cache.Insert("posts", posts); + } + + doc.Save(file); + } + + public static void Delete(Post post) + { + var posts = GetAllPosts(); + string file = Path.Combine(_folder, post.ID + ".xml"); + File.Delete(file); + posts.Remove(post); + } + + private static void LoadPosts() + { + if (!Directory.Exists(_folder)) + Directory.CreateDirectory(_folder); + + List list = new List(); + + foreach (string file in Directory.GetFiles(_folder, "*.xml", SearchOption.TopDirectoryOnly)) + { + XElement doc = XElement.Load(file); + + Post post = new Post() + { + ID = Path.GetFileNameWithoutExtension(file), + Title = ReadValue(doc, "title"), + Author = ReadValue(doc, "author"), + Content = ReadValue(doc, "content"), + Slug = ReadValue(doc, "slug").ToLowerInvariant(), + PubDate = DateTime.Parse(ReadValue(doc, "pubDate")), + LastModified = DateTime.Parse(ReadValue(doc, "lastModified", DateTime.Now.ToString())), + IsPublished = bool.Parse(ReadValue(doc, "ispublished", "true")), + }; + + LoadCategories(post, doc); + LoadComments(post, doc); + list.Add(post); + } + + if (list.Count > 0) + { + list.Sort((p1, p2) => p2.PubDate.CompareTo(p1.PubDate)); + HttpRuntime.Cache.Insert("posts", list); + } + } + + private static void LoadCategories(Post post, XElement doc) + { + XElement categories = doc.Element("categories"); + if (categories == null) + return; + + List list = new List(); + + foreach (var node in categories.Elements("category")) + { + list.Add(node.Value); + } + + post.Categories = list.ToArray(); + } + private static void LoadComments(Post post, XElement doc) + { + var comments = doc.Element("comments"); + + if (comments == null) + return; + + foreach (var node in comments.Elements("comment")) + { + Comment comment = new Comment() + { + ID = ReadAttribute(node, "id"), + Author = ReadValue(node, "author"), + Email = ReadValue(node, "email"), + Website = ReadValue(node, "website"), + Ip = ReadValue(node, "ip"), + UserAgent = ReadValue(node, "userAgent"), + IsAdmin = bool.Parse(ReadAttribute(node, "isAdmin", "false")), + IsApproved = bool.Parse(ReadAttribute(node, "isApproved", "true")), + Content = ReadValue(node, "content").Replace("\n", "
"), + PubDate = DateTime.Parse(ReadValue(node, "date", "2000-01-01")), + }; + + post.Comments.Add(comment); + } + } + + private static string ReadValue(XElement doc, XName name, string defaultValue = "") + { + if (doc.Element(name) != null) + return doc.Element(name).Value; + + return defaultValue; + } + + private static string ReadAttribute(XElement element, XName name, string defaultValue = "") + { + if (element.Attribute(name) != null) + return element.Attribute(name).Value; + + return defaultValue; + } +} \ No newline at end of file diff --git a/Sevomin.News/app_code/handlers/CommentHandler.cs b/Sevomin.News/app_code/handlers/CommentHandler.cs new file mode 100644 index 0000000..88f10ec --- /dev/null +++ b/Sevomin.News/app_code/handlers/CommentHandler.cs @@ -0,0 +1,187 @@ +using System; +using System.Configuration; +using System.Linq; +using System.Net.Mail; +using System.Text.RegularExpressions; +using System.Web; +using System.Web.WebPages; + +public class CommentHandler : IHttpHandler +{ + public void ProcessRequest(HttpContext context) + { + Post post = Storage.GetAllPosts().SingleOrDefault(p => p.ID == context.Request["postId"]); + + if (post == null) + throw new HttpException(404, "The post does not exist"); + + string mode = context.Request["mode"]; + + if (mode == "save" && context.Request.HttpMethod == "POST" && post.AreCommentsOpen(new HttpContextWrapper(context)) && Blog.MatchesUniqueId(context)) + { + Save(context, post); + } + else if (mode == "delete") + { + Delete(context, post); + } + else if (mode == "approve") + { + Approve(context, post); + } + } + + private static void Save(HttpContext context, Post post) + { + string name = context.Request.Form["name"]; + string email = context.Request.Form["email"]; + string website = context.Request.Form["website"]; + string content = context.Request.Form["content"]; + + Validate(name, email, content); + + Comment comment = new Comment() + { + Author = name.Trim(), + Email = email.Trim(), + Website = GetUrl(website), + Ip = context.Request.UserHostAddress, + UserAgent = context.Request.UserAgent, + IsAdmin = context.User.Identity.IsAuthenticated, + Content = HttpUtility.HtmlEncode(content.Trim()).Replace("\n", "
"), + IsApproved = !Blog.ModerateComments, + }; + + post.Comments.Add(comment); + Storage.Save(post); + + if (!context.User.Identity.IsAuthenticated) + System.Threading.ThreadPool.QueueUserWorkItem((s) => SendEmail(comment, post, context.Request)); + + RenderComment(context, comment); + } + + private static void RenderComment(HttpContext context, Comment comment) + { + var page = (WebPage)WebPageBase.CreateInstanceFromVirtualPath("~/themes/" + Blog.Theme + "/comment.cshtml"); + page.Context = new HttpContextWrapper(context); + page.ExecutePageHierarchy(new WebPageContext(page.Context, page: null, model: comment), context.Response.Output); + } + + private static void SendEmail(Comment comment, Post post, HttpRequest request) + { + try + { + MailMessage mail = new MailMessage(); + mail.From = new MailAddress(comment.Email, comment.Author); + mail.ReplyToList.Add(comment.Email); + mail.To.Add(ConfigurationManager.AppSettings.Get("blog:email")); + mail.Subject = "Blog comment: " + post.Title; + mail.IsBodyHtml = true; + + string absoluteUrl = request.Url.Scheme + "://" + request.Url.Authority; + string deleteUrl = absoluteUrl + request.RawUrl + "?postId=" + post.ID + "&commentId=" + comment.ID + "&mode=delete"; + string approveUrl = absoluteUrl + request.RawUrl + "?postId=" + post.ID + "&commentId=" + comment.ID + "&mode=approve"; + mail.Body = "
" + + comment.Author + " on " + post.Title + ":

" + + comment.Content + "

" + + (Blog.ModerateComments ? "Approve comment | " : string.Empty) + + "Delete comment" + + "


" + + "Website: " + comment.Website + "
" + + "E-mail: " + comment.Email + "
" + + "IP-address: " + comment.Ip + + "
"; + + + SmtpClient client = new SmtpClient(); + client.Send(mail); + } + catch + { } + } + + private static void Validate(string name, string email, string content) + { + bool isName = !string.IsNullOrEmpty(name); + bool isMail = !string.IsNullOrEmpty(email) && Regex.IsMatch(email, @"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"); + bool isContent = !string.IsNullOrEmpty(content); + + if (!isName || !isMail || !isContent) + { + if (!isName) + HttpContext.Current.Response.Status = "403 Please enter a valid name"; + else if (!isMail) + HttpContext.Current.Response.Status = "403 Please enter a valid e-mail address"; + else if (!isContent) + HttpContext.Current.Response.Status = "403 Please enter a valid comment"; + + HttpContext.Current.Response.End(); + } + } + + private static string GetUrl(string website) + { + if (!website.Contains("://")) + website = "http://" + website; + + Uri url; + if (Uri.TryCreate(website, UriKind.Absolute, out url)) + return url.ToString(); + + return string.Empty; + } + + private static void Delete(HttpContext context, Post post) + { + if (!context.User.Identity.IsAuthenticated) + throw new HttpException(403, "No access"); + + string commentId = context.Request["commentId"]; + Comment comment = post.Comments.SingleOrDefault(c => c.ID == commentId); + + if (comment != null) + { + post.Comments.Remove(comment); + Storage.Save(post); + } + else + { + throw new HttpException(404, "Comment could not be found"); + } + + if (context.Request.HttpMethod == "GET") + { + context.Response.Redirect(post.AbsoluteUrl.ToString() + "#comments", true); + } + } + + private static void Approve(HttpContext context, Post post) + { + if (!context.User.Identity.IsAuthenticated) + throw new HttpException(403, "No access"); + + string commentId = context.Request["commentId"]; + Comment comment = post.Comments.SingleOrDefault(c => c.ID == commentId); + + if (comment != null) + { + comment.IsApproved = true; + Storage.Save(post); + } + else + { + throw new HttpException(404, "Comment could not be found"); + } + + if (context.Request.HttpMethod == "GET") + { + context.Response.Redirect(post.AbsoluteUrl.ToString() + "#comments", true); + } + } + + public bool IsReusable + { + get { return false; } + } +} \ No newline at end of file diff --git a/Sevomin.News/app_code/handlers/FeedHandler.cs b/Sevomin.News/app_code/handlers/FeedHandler.cs new file mode 100644 index 0000000..ad53387 --- /dev/null +++ b/Sevomin.News/app_code/handlers/FeedHandler.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.ServiceModel.Syndication; +using System.Web; +using System.Xml; + +public class FeedHandler : IHttpHandler +{ + public void ProcessRequest(HttpContext context) + { + SyndicationFeed feed = new SyndicationFeed() + { + Title = new TextSyndicationContent(Blog.Title), + Description = new TextSyndicationContent("Latest blog posts"), + BaseUri = new Uri(context.Request.Url.Scheme + "://" + context.Request.Url.Authority), + Items = GetItems(), + }; + + feed.Links.Add(new SyndicationLink(feed.BaseUri)); + + using (var writer = new XmlTextWriter(context.Response.Output)) + { + var formatter = GetFormatter(context, feed); + formatter.WriteTo(writer); + } + + context.Response.ContentType = "text/xml"; + } + + private IEnumerable GetItems() + { + foreach (Post p in Blog.GetPosts(10)) + { + var item = new SyndicationItem(p.Title, p.Content, p.AbsoluteUrl, p.AbsoluteUrl.ToString(), p.LastModified); + item.Authors.Add(new SyndicationPerson("", p.Author, "")); + yield return item; + } + } + + private SyndicationFeedFormatter GetFormatter(HttpContext context, SyndicationFeed feed) + { + string path = context.Request.Path.Trim('/'); + int index = path.LastIndexOf('/'); + + if (index > -1 && path.Substring(index + 1) == "atom") + { + context.Response.ContentType = "application/atom+xml"; + return new Atom10FeedFormatter(feed); + } + + context.Response.ContentType = "application/rss+xml"; + return new Rss20FeedFormatter(feed); + } + + public bool IsReusable + { + get { return false; } + } +} \ No newline at end of file diff --git a/Sevomin.News/app_code/handlers/MetaWeblogHandler.cs b/Sevomin.News/app_code/handlers/MetaWeblogHandler.cs new file mode 100644 index 0000000..1b25706 --- /dev/null +++ b/Sevomin.News/app_code/handlers/MetaWeblogHandler.cs @@ -0,0 +1,188 @@ +using CookComputing.XmlRpc; +using System.Collections.Generic; +using System.Configuration; +using System.IO; +using System.Linq; +using System.Web.Security; + +public interface IMetaWeblog +{ + #region MetaWeblog API + + [XmlRpcMethod("metaWeblog.newPost")] + string AddPost(string blogid, string username, string password, Post post, bool publish); + + [XmlRpcMethod("metaWeblog.editPost")] + bool UpdatePost(string postid, string username, string password, Post post, bool publish); + + [XmlRpcMethod("metaWeblog.getPost")] + object GetPost(string postid, string username, string password); + + [XmlRpcMethod("metaWeblog.getCategories")] + object[] GetCategories(string blogid, string username, string password); + + [XmlRpcMethod("metaWeblog.getRecentPosts")] + object[] GetRecentPosts(string blogid, string username, string password, int numberOfPosts); + + [XmlRpcMethod("metaWeblog.newMediaObject")] + object NewMediaObject(string blogid, string username, string password, MediaObject mediaObject); + + #endregion + + #region Blogger API + + [XmlRpcMethod("blogger.deletePost")] + [return: XmlRpcReturnValue(Description = "Returns true.")] + bool DeletePost(string key, string postid, string username, string password, bool publish); + + [XmlRpcMethod("blogger.getUsersBlogs")] + object[] GetUsersBlogs(string key, string username, string password); + + #endregion +} + +public class MetaWeblogHandler : XmlRpcService, IMetaWeblog +{ + string IMetaWeblog.AddPost(string blogid, string username, string password, Post post, bool publish) + { + ValidateUser(username, password); + + post.Slug = PostHandler.CreateSlug(post.Title); + post.IsPublished = publish; + Storage.Save(post); + + return post.ID; + } + + bool IMetaWeblog.UpdatePost(string postid, string username, string password, Post post, bool publish) + { + ValidateUser(username, password); + + Post match = Storage.GetAllPosts().FirstOrDefault(p => p.ID == postid); + + if (match != null) + { + match.Title = post.Title; + match.Content = post.Content; + match.Slug = post.Slug; + match.Categories = post.Categories; + match.IsPublished = publish; + match.PubDate = post.PubDate; + Storage.Save(match); + } + + return match != null; + } + + bool IMetaWeblog.DeletePost(string key, string postid, string username, string password, bool publish) + { + ValidateUser(username, password); + + Post post = Storage.GetAllPosts().FirstOrDefault(p => p.ID == postid); + + if (post != null) + { + Storage.Delete(post); + } + + return post != null; + } + + object IMetaWeblog.GetPost(string postid, string username, string password) + { + ValidateUser(username, password); + + Post post = Storage.GetAllPosts().FirstOrDefault(p => p.ID == postid); + + if (post == null) + throw new XmlRpcFaultException(0, "Post does not exist"); + + return new + { + description = post.Content, + title = post.Title, + dateCreated = post.PubDate, + wp_slug = post.Slug, + categories = post.Categories.ToArray(), + postid = post.ID + }; + } + + object[] IMetaWeblog.GetRecentPosts(string blogid, string username, string password, int numberOfPosts) + { + ValidateUser(username, password); + + List list = new List(); + + foreach (var post in Storage.GetAllPosts().Take(numberOfPosts)) + { + var info = new + { + description = post.Content, + title = post.Title, + dateCreated = post.PubDate, + wp_slug = post.Slug, + postid = post.ID + }; + + list.Add(info); + } + + return list.ToArray(); + } + + object[] IMetaWeblog.GetCategories(string blogid, string username, string password) + { + ValidateUser(username, password); + + var list = new List(); + var categories = Storage.GetAllPosts().SelectMany(p => p.Categories); + + foreach (string category in categories.Distinct()) + { + list.Add(new { title = category }); + } + + return list.ToArray(); + } + + object IMetaWeblog.NewMediaObject(string blogid, string username, string password, MediaObject media) + { + ValidateUser(username, password); + + string path = Blog.SaveFileToDisk(media.bits, Path.GetExtension(media.name)); + + return new { url = path }; + } + + object[] IMetaWeblog.GetUsersBlogs(string key, string username, string password) + { + ValidateUser(username, password); + + return new[] + { + new + { + blogid = "1", + blogName = ConfigurationManager.AppSettings.Get("blog:name"), + url = Context.Request.Url.Scheme + "://" + Context.Request.Url.Authority + } + }; + } + + private void ValidateUser(string username, string password) + { + if (!FormsAuthentication.Authenticate(username, password)) + { + throw new XmlRpcFaultException(0, "User is not valid!"); + } + } +} + +[XmlRpcMissingMapping(MappingAction.Ignore)] +public struct MediaObject +{ + public string name; + public string type; + public byte[] bits; +} \ No newline at end of file diff --git a/Sevomin.News/app_code/handlers/MinifyHandler.cs b/Sevomin.News/app_code/handlers/MinifyHandler.cs new file mode 100644 index 0000000..77b988d --- /dev/null +++ b/Sevomin.News/app_code/handlers/MinifyHandler.cs @@ -0,0 +1,60 @@ +using Microsoft.Ajax.Utilities; +using System; +using System.IO; +using System.Web; +using System.Web.Caching; + +public class MinifyHandler : IHttpHandler +{ + public void ProcessRequest(HttpContext context) + { + string file = context.Server.MapPath(context.Request.CurrentExecutionFilePath); + string ext = Path.GetExtension(file); + + if (context.IsDebuggingEnabled) + { + context.Response.TransmitFile(file); + } + else + { + Minify(context.Response, file, ext); + } + + SetHeaders(context.Response, file, ext); + } + + private static void SetHeaders(HttpResponse response, string file, string ext) + { + response.ContentType = ext == ".css" ? "text/css" : "text/javascript"; + + response.Cache.SetLastModified(File.GetLastWriteTimeUtc(file)); + response.Cache.SetValidUntilExpires(true); + response.Cache.SetExpires(DateTime.Now.AddYears(1)); + response.Cache.SetCacheability(HttpCacheability.ServerAndPrivate); + response.Cache.SetVaryByCustom("Accept-Encoding"); + + response.AddCacheDependency(new CacheDependency(file)); + } + + private static void Minify(HttpResponse response, string file, string ext) + { + string content = File.ReadAllText(file); + Minifier minifier = new Minifier(); + + if (ext == ".css") + { + CssSettings settings = new CssSettings() { CommentMode = CssComment.None }; + response.Write(minifier.MinifyStyleSheet(content, settings)); + } + else if (ext == ".js") + { + CodeSettings settings = new CodeSettings() { PreserveImportantComments = false }; + response.Write(minifier.MinifyJavaScript(content, settings)); + } + } + + public bool IsReusable + { + get { return false; } + } +} \ No newline at end of file diff --git a/Sevomin.News/app_code/handlers/PostHandler.cs b/Sevomin.News/app_code/handlers/PostHandler.cs new file mode 100644 index 0000000..ff8319d --- /dev/null +++ b/Sevomin.News/app_code/handlers/PostHandler.cs @@ -0,0 +1,117 @@ +using System; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Web; + +public class PostHandler : IHttpHandler +{ + public void ProcessRequest(HttpContext context) + { + if (!context.User.Identity.IsAuthenticated || Blog.MatchesUniqueId(context)) + throw new HttpException(403, "No access"); + + string mode = context.Request.QueryString["mode"]; + string id = context.Request.Form["id"]; + + if (mode == "delete") + { + DeletePost(id); + } + else if (mode == "save") + { + EditPost(id, context.Request.Form["title"], context.Request.Form["content"], bool.Parse(context.Request.Form["isPublished"]), context.Request.Form["categories"].Split(',')); + } + } + + private void DeletePost(string id) + { + Post post = Storage.GetAllPosts().FirstOrDefault(p => p.ID == id); + + if (post == null) + throw new HttpException(404, "The post does not exist"); + + Storage.Delete(post); + } + + private void EditPost(string id, string title, string content, bool isPublished, string[] categories) + { + Post post = Storage.GetAllPosts().FirstOrDefault(p => p.ID == id); + + if (post != null) + { + post.Title = title; + post.Content = content; + post.Categories = categories; + } + else + { + post = new Post() { Title = title, Content = content, Slug = CreateSlug(title), Categories = categories }; + HttpContext.Current.Response.Write(post.Url); + } + + SaveFilesToDisk(post); + + post.IsPublished = isPublished; + Storage.Save(post); + } + + private void SaveFilesToDisk(Post post) + { + foreach (Match match in Regex.Matches(post.Content, "(src|href)=\"(data:([^\"]+))\"")) + { + string extension = Regex.Match(match.Value, "data:([^/]+)/([a-z]+);base64").Groups[2].Value; + + byte[] bytes = ConvertToBytes(match.Groups[2].Value); + string path = Blog.SaveFileToDisk(bytes, extension); + + string value = string.Format("src=\"{0}\" alt=\"\" /", path); + + if (match.Groups[1].Value == "href") + value = string.Format("href=\"{0}\"", path); + + post.Content = post.Content.Replace(match.Value, value); + } + } + + private byte[] ConvertToBytes(string base64) + { + int index = base64.IndexOf("base64,", StringComparison.Ordinal) + 7; + return Convert.FromBase64String(base64.Substring(index)); + } + + public static string CreateSlug(string title) + { + title = title.ToLowerInvariant().Replace(" ", "-"); + title = RemoveDiacritics(title); + title = Regex.Replace(title, @"([^0-9a-z-])", string.Empty); + + if (Storage.GetAllPosts().Any(p => string.Equals(p.Slug, title))) + throw new HttpException(409, "Already in use"); + + return title.ToLowerInvariant(); + } + + static string RemoveDiacritics(string text) + { + var normalizedString = text.Normalize(NormalizationForm.FormD); + var stringBuilder = new StringBuilder(); + + foreach (var c in normalizedString) + { + var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c); + if (unicodeCategory != UnicodeCategory.NonSpacingMark) + { + stringBuilder.Append(c); + } + } + + return stringBuilder.ToString().Normalize(NormalizationForm.FormC); + } + + public bool IsReusable + { + get { return false; } + } +} \ No newline at end of file diff --git a/Sevomin.News/css/admin.css b/Sevomin.News/css/admin.css new file mode 100644 index 0000000..2f8251b --- /dev/null +++ b/Sevomin.News/css/admin.css @@ -0,0 +1,94 @@ +@media (max-width: 1024px) { + .nav > li { + display: inline-block; + } + + .nav > li button, #ispublished { + padding-left: 8px; + padding-right: 8px; + } +} + +.admin { + margin-top: 50px; +} + +#admin { + font: 12pt arial; +} + + #admin .navbar-inner { + min-height: 0; + padding-top: 8px; + } + + #admin form { + position: absolute; + top: 8px; + right: 1em; + margin: 0; + } + + #admin .nav { + margin-left: 1em; + } + + #admin button:focus { + outline: 0; + white-space: nowrap; + } + +#ispublished { + display: none; + position: relative; + top: 7px; + left: 10px; +} + + #ispublished label { + display: inline; + position: relative; + left: 4px; + font-weight: normal; + } + +#admin #tools { + position: relative; + top: 5px; + left: 10px; + margin: 0 1em; + display: none; +} + + #admin #tools a { + font-size: 14px; + font-weight: bold; + padding: 0 9px; + } + + #admin #tools div:not(:last-child) { + border-right: 1px solid gray; + } + +#admin aside { + position: absolute; + top: 4em; + text-align: center; + width: 100%; + display: none; +} + + #admin aside .alert { + display: inline-block; + padding: 8px 1em; + } + +[contenteditable] { + outline: thin dashed #ccc; + width: 100%; + display: inline-block; +} + + [contenteditable] img { + cursor: move; + } diff --git a/Sevomin.News/css/bootstrap-theme.min.css b/Sevomin.News/css/bootstrap-theme.min.css new file mode 100644 index 0000000..1fcc50d --- /dev/null +++ b/Sevomin.News/css/bootstrap-theme.min.css @@ -0,0 +1 @@ +.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0%,#e0e0e0 100%);background-image:linear-gradient(to bottom,#fff 0%,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe0e0e0',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-primary{background-image:-webkit-linear-gradient(top,#428bca 0%,#2d6ca2 100%);background-image:linear-gradient(to bottom,#428bca 0%,#2d6ca2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff2d6ca2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#2b669a}.btn-primary:hover,.btn-primary:focus{background-color:#2d6ca2;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#2d6ca2;border-color:#2b669a}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0%,#419641 100%);background-image:linear-gradient(to bottom,#5cb85c 0%,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff419641',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0%,#2aabd2 100%);background-image:linear-gradient(to bottom,#5bc0de 0%,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2aabd2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0%,#eb9316 100%);background-image:linear-gradient(to bottom,#f0ad4e 0%,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffeb9316',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0%,#c12e2a 100%);background-image:linear-gradient(to bottom,#d9534f 0%,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc12e2a',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0%,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0%,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#357ebd;background-image:-webkit-linear-gradient(top,#428bca 0%,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0%,#357ebd 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0);background-repeat:repeat-x}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0%,#c8e5bc 100%);background-image:linear-gradient(to bottom,#dff0d8 0%,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffc8e5bc',GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0%,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0%,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffb9def0',GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0%,#f8efc0 100%);background-image:linear-gradient(to bottom,#fcf8e3 0%,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fff8efc0',GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0%,#e7c3c3 100%);background-image:linear-gradient(to bottom,#f2dede 0%,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffe7c3c3',GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0%,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0%,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff5f5f5',GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0%,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0%,#3071a9 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3071a9',GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0%,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0%,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0%,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0%,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0%,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0%,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0%,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0%,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0);background-repeat:repeat-x}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0%,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0%,#3278b3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff3278b3',GradientType=0);background-repeat:repeat-x;border-color:#3278b3}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0%,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0%,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0%,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0%,#357ebd 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca',endColorstr='#ff357ebd',GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0%,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0%,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffd0e9c6',GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0%,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0%,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffc4e3f3',GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0%,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0%,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fffaf2cc',GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0%,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0%,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffebcccc',GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0%,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0%,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8',endColorstr='#fff5f5f5',GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} \ No newline at end of file diff --git a/Sevomin.News/css/bootstrap.min.css b/Sevomin.News/css/bootstrap.min.css new file mode 100644 index 0000000..5b03099 --- /dev/null +++ b/Sevomin.News/css/bootstrap.min.css @@ -0,0 +1,839 @@ + +html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%} +body{margin:0} +article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block} +audio,canvas,progress,video{display:inline-block;vertical-align:baseline} +audio:not([controls]){display:none;height:0} +[hidden],template{display:none} +a{background:transparent} +a:active,a:hover{outline:0} +abbr[title]{border-bottom:1px dotted} +b,strong{font-weight:bold} +dfn{font-style:italic} +h1{font-size:2em;margin:.67em 0} +mark{background:#ff0;color:#000} +small{font-size:80%} +sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} +sup{top:-0.5em} +sub{bottom:-0.25em} +img{border:0} +svg:not(:root){overflow:hidden} +figure{margin:1em 40px} +hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0} +pre{overflow:auto} +code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em} +button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0} +button{overflow:visible} +button,select{text-transform:none} +button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer} +button[disabled],html input[disabled]{cursor:default} +button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0} +input{line-height:normal} +input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0} +input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto} +input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box} +input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none} +fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em} +legend{border:0;padding:0} +textarea{overflow:auto} +optgroup{font-weight:bold} +table{border-collapse:collapse;border-spacing:0} +td,th{padding:0} +@media print{*{text-shadow:none !important;color:#000 !important;background:transparent !important;box-shadow:none !important} a,a:visited{text-decoration:underline} a[href]:after{content:" (" attr(href) ")"} abbr[title]:after{content:" (" attr(title) ")"} a[href^="javascript:"]:after,a[href^="#"]:after{content:""} pre,blockquote{border:1px solid #999;page-break-inside:avoid} thead{display:table-header-group} tr,img{page-break-inside:avoid} img{max-width:100% !important} p,h2,h3{orphans:3;widows:3} h2,h3{page-break-after:avoid} select{background:#fff !important} .navbar{display:none} .table td,.table th{background-color:#fff !important} .btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important} .label{border:1px solid #000} .table{border-collapse:collapse !important} .table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} +*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} +html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)} +body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff} +input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit} +a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline} +a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px} +figure{margin:0} +img{vertical-align:middle} +.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto} +.img-rounded{border-radius:6px} +.img-thumbnail{padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto} +.img-circle{border-radius:50%} +hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee} +.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0} +h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#999} +h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%} +h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%} +h1,.h1{font-size:36px} +h2,.h2{font-size:30px} +h3,.h3{font-size:24px} +h4,.h4{font-size:18px} +h5,.h5{font-size:14px} +h6,.h6{font-size:12px} +p{margin:0 0 10px} +.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}} +small,.small{font-size:85%} +cite{font-style:normal} +.text-left{text-align:left} +.text-right{text-align:right} +.text-center{text-align:center} +.text-justify{text-align:justify} +.text-muted{color:#999} +.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9} +.text-success{color:#3c763d}a.text-success:hover{color:#2b542c} +.text-info{color:#31708f}a.text-info:hover{color:#245269} +.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c} +.text-danger{color:#a94442}a.text-danger:hover{color:#843534} +.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9} +.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3} +.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee} +.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5} +.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9} +.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee} +ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0} +.list-unstyled{padding-left:0;list-style:none} +.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px} +dl{margin-top:0;margin-bottom:20px} +dt,dd{line-height:1.428571429} +dt{font-weight:bold} +dd{margin-left:0} +@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999} +.initialism{font-size:90%;text-transform:uppercase} +blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0} +blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.428571429;color:#999}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'} +.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''} +.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'} +blockquote:before,blockquote:after{content:""} +address{margin-bottom:20px;font-style:normal;line-height:1.428571429} +code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace} +code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px} +kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)} +pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0} +.pre-scrollable{max-height:340px;overflow-y:scroll} +.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}} +.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px} +.row{margin-left:-15px;margin-right:-15px} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12{float:left} +.col-xs-12{width:100%} +.col-xs-11{width:91.66666666666666%} +.col-xs-10{width:83.33333333333334%} +.col-xs-9{width:75%} +.col-xs-8{width:66.66666666666666%} +.col-xs-7{width:58.333333333333336%} +.col-xs-6{width:50%} +.col-xs-5{width:41.66666666666667%} +.col-xs-4{width:33.33333333333333%} +.col-xs-3{width:25%} +.col-xs-2{width:16.666666666666664%} +.col-xs-1{width:8.333333333333332%} +.col-xs-pull-12{right:100%} +.col-xs-pull-11{right:91.66666666666666%} +.col-xs-pull-10{right:83.33333333333334%} +.col-xs-pull-9{right:75%} +.col-xs-pull-8{right:66.66666666666666%} +.col-xs-pull-7{right:58.333333333333336%} +.col-xs-pull-6{right:50%} +.col-xs-pull-5{right:41.66666666666667%} +.col-xs-pull-4{right:33.33333333333333%} +.col-xs-pull-3{right:25%} +.col-xs-pull-2{right:16.666666666666664%} +.col-xs-pull-1{right:8.333333333333332%} +.col-xs-pull-0{right:0} +.col-xs-push-12{left:100%} +.col-xs-push-11{left:91.66666666666666%} +.col-xs-push-10{left:83.33333333333334%} +.col-xs-push-9{left:75%} +.col-xs-push-8{left:66.66666666666666%} +.col-xs-push-7{left:58.333333333333336%} +.col-xs-push-6{left:50%} +.col-xs-push-5{left:41.66666666666667%} +.col-xs-push-4{left:33.33333333333333%} +.col-xs-push-3{left:25%} +.col-xs-push-2{left:16.666666666666664%} +.col-xs-push-1{left:8.333333333333332%} +.col-xs-push-0{left:0} +.col-xs-offset-12{margin-left:100%} +.col-xs-offset-11{margin-left:91.66666666666666%} +.col-xs-offset-10{margin-left:83.33333333333334%} +.col-xs-offset-9{margin-left:75%} +.col-xs-offset-8{margin-left:66.66666666666666%} +.col-xs-offset-7{margin-left:58.333333333333336%} +.col-xs-offset-6{margin-left:50%} +.col-xs-offset-5{margin-left:41.66666666666667%} +.col-xs-offset-4{margin-left:33.33333333333333%} +.col-xs-offset-3{margin-left:25%} +.col-xs-offset-2{margin-left:16.666666666666664%} +.col-xs-offset-1{margin-left:8.333333333333332%} +.col-xs-offset-0{margin-left:0} +@media (min-width:768px){.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12{float:left} .col-sm-12{width:100%} .col-sm-11{width:91.66666666666666%} .col-sm-10{width:83.33333333333334%} .col-sm-9{width:75%} .col-sm-8{width:66.66666666666666%} .col-sm-7{width:58.333333333333336%} .col-sm-6{width:50%} .col-sm-5{width:41.66666666666667%} .col-sm-4{width:33.33333333333333%} .col-sm-3{width:25%} .col-sm-2{width:16.666666666666664%} .col-sm-1{width:8.333333333333332%} .col-sm-pull-12{right:100%} .col-sm-pull-11{right:91.66666666666666%} .col-sm-pull-10{right:83.33333333333334%} .col-sm-pull-9{right:75%} .col-sm-pull-8{right:66.66666666666666%} .col-sm-pull-7{right:58.333333333333336%} .col-sm-pull-6{right:50%} .col-sm-pull-5{right:41.66666666666667%} .col-sm-pull-4{right:33.33333333333333%} .col-sm-pull-3{right:25%} .col-sm-pull-2{right:16.666666666666664%} .col-sm-pull-1{right:8.333333333333332%} .col-sm-pull-0{right:0} .col-sm-push-12{left:100%} .col-sm-push-11{left:91.66666666666666%} .col-sm-push-10{left:83.33333333333334%} .col-sm-push-9{left:75%} .col-sm-push-8{left:66.66666666666666%} .col-sm-push-7{left:58.333333333333336%} .col-sm-push-6{left:50%} .col-sm-push-5{left:41.66666666666667%} .col-sm-push-4{left:33.33333333333333%} .col-sm-push-3{left:25%} .col-sm-push-2{left:16.666666666666664%} .col-sm-push-1{left:8.333333333333332%} .col-sm-push-0{left:0} .col-sm-offset-12{margin-left:100%} .col-sm-offset-11{margin-left:91.66666666666666%} .col-sm-offset-10{margin-left:83.33333333333334%} .col-sm-offset-9{margin-left:75%} .col-sm-offset-8{margin-left:66.66666666666666%} .col-sm-offset-7{margin-left:58.333333333333336%} .col-sm-offset-6{margin-left:50%} .col-sm-offset-5{margin-left:41.66666666666667%} .col-sm-offset-4{margin-left:33.33333333333333%} .col-sm-offset-3{margin-left:25%} .col-sm-offset-2{margin-left:16.666666666666664%} .col-sm-offset-1{margin-left:8.333333333333332%} .col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12{float:left} .col-md-12{width:100%} .col-md-11{width:91.66666666666666%} .col-md-10{width:83.33333333333334%} .col-md-9{width:75%} .col-md-8{width:66.66666666666666%} .col-md-7{width:58.333333333333336%} .col-md-6{width:50%} .col-md-5{width:41.66666666666667%} .col-md-4{width:33.33333333333333%} .col-md-3{width:25%} .col-md-2{width:16.666666666666664%} .col-md-1{width:8.333333333333332%} .col-md-pull-12{right:100%} .col-md-pull-11{right:91.66666666666666%} .col-md-pull-10{right:83.33333333333334%} .col-md-pull-9{right:75%} .col-md-pull-8{right:66.66666666666666%} .col-md-pull-7{right:58.333333333333336%} .col-md-pull-6{right:50%} .col-md-pull-5{right:41.66666666666667%} .col-md-pull-4{right:33.33333333333333%} .col-md-pull-3{right:25%} .col-md-pull-2{right:16.666666666666664%} .col-md-pull-1{right:8.333333333333332%} .col-md-pull-0{right:0} .col-md-push-12{left:100%} .col-md-push-11{left:91.66666666666666%} .col-md-push-10{left:83.33333333333334%} .col-md-push-9{left:75%} .col-md-push-8{left:66.66666666666666%} .col-md-push-7{left:58.333333333333336%} .col-md-push-6{left:50%} .col-md-push-5{left:41.66666666666667%} .col-md-push-4{left:33.33333333333333%} .col-md-push-3{left:25%} .col-md-push-2{left:16.666666666666664%} .col-md-push-1{left:8.333333333333332%} .col-md-push-0{left:0} .col-md-offset-12{margin-left:100%} .col-md-offset-11{margin-left:91.66666666666666%} .col-md-offset-10{margin-left:83.33333333333334%} .col-md-offset-9{margin-left:75%} .col-md-offset-8{margin-left:66.66666666666666%} .col-md-offset-7{margin-left:58.333333333333336%} .col-md-offset-6{margin-left:50%} .col-md-offset-5{margin-left:41.66666666666667%} .col-md-offset-4{margin-left:33.33333333333333%} .col-md-offset-3{margin-left:25%} .col-md-offset-2{margin-left:16.666666666666664%} .col-md-offset-1{margin-left:8.333333333333332%} .col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12{float:left} .col-lg-12{width:100%} .col-lg-11{width:91.66666666666666%} .col-lg-10{width:83.33333333333334%} .col-lg-9{width:75%} .col-lg-8{width:66.66666666666666%} .col-lg-7{width:58.333333333333336%} .col-lg-6{width:50%} .col-lg-5{width:41.66666666666667%} .col-lg-4{width:33.33333333333333%} .col-lg-3{width:25%} .col-lg-2{width:16.666666666666664%} .col-lg-1{width:8.333333333333332%} .col-lg-pull-12{right:100%} .col-lg-pull-11{right:91.66666666666666%} .col-lg-pull-10{right:83.33333333333334%} .col-lg-pull-9{right:75%} .col-lg-pull-8{right:66.66666666666666%} .col-lg-pull-7{right:58.333333333333336%} .col-lg-pull-6{right:50%} .col-lg-pull-5{right:41.66666666666667%} .col-lg-pull-4{right:33.33333333333333%} .col-lg-pull-3{right:25%} .col-lg-pull-2{right:16.666666666666664%} .col-lg-pull-1{right:8.333333333333332%} .col-lg-pull-0{right:0} .col-lg-push-12{left:100%} .col-lg-push-11{left:91.66666666666666%} .col-lg-push-10{left:83.33333333333334%} .col-lg-push-9{left:75%} .col-lg-push-8{left:66.66666666666666%} .col-lg-push-7{left:58.333333333333336%} .col-lg-push-6{left:50%} .col-lg-push-5{left:41.66666666666667%} .col-lg-push-4{left:33.33333333333333%} .col-lg-push-3{left:25%} .col-lg-push-2{left:16.666666666666664%} .col-lg-push-1{left:8.333333333333332%} .col-lg-push-0{left:0} .col-lg-offset-12{margin-left:100%} .col-lg-offset-11{margin-left:91.66666666666666%} .col-lg-offset-10{margin-left:83.33333333333334%} .col-lg-offset-9{margin-left:75%} .col-lg-offset-8{margin-left:66.66666666666666%} .col-lg-offset-7{margin-left:58.333333333333336%} .col-lg-offset-6{margin-left:50%} .col-lg-offset-5{margin-left:41.66666666666667%} .col-lg-offset-4{margin-left:33.33333333333333%} .col-lg-offset-3{margin-left:25%} .col-lg-offset-2{margin-left:16.666666666666664%} .col-lg-offset-1{margin-left:8.333333333333332%} .col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent} +th{text-align:left} +.table{width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd} +.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd} +.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0} +.table>tbody+tbody{border-top:2px solid #ddd} +.table .table{background-color:#fff} +.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px} +.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd} +.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px} +.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9} +.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5} +table col[class*="col-"]{position:static;float:none;display:table-column} +table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell} +.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5} +.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8} +.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8} +.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6} +.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7} +.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3} +.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3} +.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc} +.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede} +.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc} +@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap} .table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0} .table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0} .table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0} +legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5} +label{display:inline-block;margin-bottom:5px;font-weight:bold} +input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box} +input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal} +input[type="file"]{display:block} +input[type="range"]{display:block;width:100%} +select[multiple],select[size]{height:auto} +input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px} +output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555} +.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6)} +.form-control::-moz-placeholder{color:#999;opacity:1} +.form-control:-ms-input-placeholder{color:#999} +.form-control::-webkit-input-placeholder{color:#999} +.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1} +textarea.form-control{height:auto} +input[type="search"]{-webkit-appearance:none} +input[type="date"]{line-height:34px} +.form-group{margin-bottom:15px} +.radio,.checkbox{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.radio label,.checkbox label{display:inline;font-weight:normal;cursor:pointer} +.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{float:left;margin-left:-20px} +.radio+.radio,.checkbox+.checkbox{margin-top:-5px} +.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer} +.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px} +input[type="radio"][disabled],input[type="checkbox"][disabled],.radio[disabled],.radio-inline[disabled],.checkbox[disabled],.checkbox-inline[disabled],fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"],fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline{cursor:not-allowed} +.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px} +textarea.input-sm,select[multiple].input-sm{height:auto} +.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px} +textarea.input-lg,select[multiple].input-lg{height:auto} +.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px} +.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center} +.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d} +.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168} +.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8} +.has-success .form-control-feedback{color:#3c763d} +.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b} +.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b} +.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3} +.has-warning .form-control-feedback{color:#8a6d3b} +.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442} +.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483} +.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede} +.has-error .form-control-feedback{color:#a94442} +.form-control-static{margin-bottom:0} +.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373} +@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle} .form-inline .form-control{display:inline-block;width:auto;vertical-align:middle} .form-inline .input-group>.form-control{width:100%} .form-inline .control-label{margin-bottom:0;vertical-align:middle} .form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle} .form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:none;margin-left:0} .form-inline .has-feedback .form-control-feedback{top:0}} +.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px} +.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px} +.form-horizontal .form-group{margin-left:-15px;margin-right:-15px} +.form-horizontal .form-control-static{padding-top:7px} +@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px} +.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.428571429;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px} +.btn:hover,.btn:focus{color:#333;text-decoration:none} +.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)} +.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none} +.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad} +.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none} +.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc} +.btn-default .badge{color:#fff;background-color:#333} +.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e} +.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none} +.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#428bca;border-color:#357ebd} +.btn-primary .badge{color:#428bca;background-color:#fff} +.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439} +.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none} +.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c} +.btn-success .badge{color:#5cb85c;background-color:#fff} +.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc} +.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none} +.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da} +.btn-info .badge{color:#5bc0de;background-color:#fff} +.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512} +.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none} +.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236} +.btn-warning .badge{color:#f0ad4e;background-color:#fff} +.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925} +.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none} +.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a} +.btn-danger .badge{color:#d9534f;background-color:#fff} +.btn-link{color:#428bca;font-weight:normal;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none} +.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent} +.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent} +.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#999;text-decoration:none} +.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px} +.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px} +.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px} +.btn-block{display:block;width:100%;padding-left:0;padding-right:0} +.btn-block+.btn-block{margin-top:5px} +input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%} +.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1} +.collapse{display:none}.collapse.in{display:block} +.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease} +@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} +.glyphicon-asterisk:before{content:"\2a"} +.glyphicon-plus:before{content:"\2b"} +.glyphicon-euro:before{content:"\20ac"} +.glyphicon-minus:before{content:"\2212"} +.glyphicon-cloud:before{content:"\2601"} +.glyphicon-envelope:before{content:"\2709"} +.glyphicon-pencil:before{content:"\270f"} +.glyphicon-glass:before{content:"\e001"} +.glyphicon-music:before{content:"\e002"} +.glyphicon-search:before{content:"\e003"} +.glyphicon-heart:before{content:"\e005"} +.glyphicon-star:before{content:"\e006"} +.glyphicon-star-empty:before{content:"\e007"} +.glyphicon-user:before{content:"\e008"} +.glyphicon-film:before{content:"\e009"} +.glyphicon-th-large:before{content:"\e010"} +.glyphicon-th:before{content:"\e011"} +.glyphicon-th-list:before{content:"\e012"} +.glyphicon-ok:before{content:"\e013"} +.glyphicon-remove:before{content:"\e014"} +.glyphicon-zoom-in:before{content:"\e015"} +.glyphicon-zoom-out:before{content:"\e016"} +.glyphicon-off:before{content:"\e017"} +.glyphicon-signal:before{content:"\e018"} +.glyphicon-cog:before{content:"\e019"} +.glyphicon-trash:before{content:"\e020"} +.glyphicon-home:before{content:"\e021"} +.glyphicon-file:before{content:"\e022"} +.glyphicon-time:before{content:"\e023"} +.glyphicon-road:before{content:"\e024"} +.glyphicon-download-alt:before{content:"\e025"} +.glyphicon-download:before{content:"\e026"} +.glyphicon-upload:before{content:"\e027"} +.glyphicon-inbox:before{content:"\e028"} +.glyphicon-play-circle:before{content:"\e029"} +.glyphicon-repeat:before{content:"\e030"} +.glyphicon-refresh:before{content:"\e031"} +.glyphicon-list-alt:before{content:"\e032"} +.glyphicon-lock:before{content:"\e033"} +.glyphicon-flag:before{content:"\e034"} +.glyphicon-headphones:before{content:"\e035"} +.glyphicon-volume-off:before{content:"\e036"} +.glyphicon-volume-down:before{content:"\e037"} +.glyphicon-volume-up:before{content:"\e038"} +.glyphicon-qrcode:before{content:"\e039"} +.glyphicon-barcode:before{content:"\e040"} +.glyphicon-tag:before{content:"\e041"} +.glyphicon-tags:before{content:"\e042"} +.glyphicon-book:before{content:"\e043"} +.glyphicon-bookmark:before{content:"\e044"} +.glyphicon-print:before{content:"\e045"} +.glyphicon-camera:before{content:"\e046"} +.glyphicon-font:before{content:"\e047"} +.glyphicon-bold:before{content:"\e048"} +.glyphicon-italic:before{content:"\e049"} +.glyphicon-text-height:before{content:"\e050"} +.glyphicon-text-width:before{content:"\e051"} +.glyphicon-align-left:before{content:"\e052"} +.glyphicon-align-center:before{content:"\e053"} +.glyphicon-align-right:before{content:"\e054"} +.glyphicon-align-justify:before{content:"\e055"} +.glyphicon-list:before{content:"\e056"} +.glyphicon-indent-left:before{content:"\e057"} +.glyphicon-indent-right:before{content:"\e058"} +.glyphicon-facetime-video:before{content:"\e059"} +.glyphicon-picture:before{content:"\e060"} +.glyphicon-map-marker:before{content:"\e062"} +.glyphicon-adjust:before{content:"\e063"} +.glyphicon-tint:before{content:"\e064"} +.glyphicon-edit:before{content:"\e065"} +.glyphicon-share:before{content:"\e066"} +.glyphicon-check:before{content:"\e067"} +.glyphicon-move:before{content:"\e068"} +.glyphicon-step-backward:before{content:"\e069"} +.glyphicon-fast-backward:before{content:"\e070"} +.glyphicon-backward:before{content:"\e071"} +.glyphicon-play:before{content:"\e072"} +.glyphicon-pause:before{content:"\e073"} +.glyphicon-stop:before{content:"\e074"} +.glyphicon-forward:before{content:"\e075"} +.glyphicon-fast-forward:before{content:"\e076"} +.glyphicon-step-forward:before{content:"\e077"} +.glyphicon-eject:before{content:"\e078"} +.glyphicon-chevron-left:before{content:"\e079"} +.glyphicon-chevron-right:before{content:"\e080"} +.glyphicon-plus-sign:before{content:"\e081"} +.glyphicon-minus-sign:before{content:"\e082"} +.glyphicon-remove-sign:before{content:"\e083"} +.glyphicon-ok-sign:before{content:"\e084"} +.glyphicon-question-sign:before{content:"\e085"} +.glyphicon-info-sign:before{content:"\e086"} +.glyphicon-screenshot:before{content:"\e087"} +.glyphicon-remove-circle:before{content:"\e088"} +.glyphicon-ok-circle:before{content:"\e089"} +.glyphicon-ban-circle:before{content:"\e090"} +.glyphicon-arrow-left:before{content:"\e091"} +.glyphicon-arrow-right:before{content:"\e092"} +.glyphicon-arrow-up:before{content:"\e093"} +.glyphicon-arrow-down:before{content:"\e094"} +.glyphicon-share-alt:before{content:"\e095"} +.glyphicon-resize-full:before{content:"\e096"} +.glyphicon-resize-small:before{content:"\e097"} +.glyphicon-exclamation-sign:before{content:"\e101"} +.glyphicon-gift:before{content:"\e102"} +.glyphicon-leaf:before{content:"\e103"} +.glyphicon-fire:before{content:"\e104"} +.glyphicon-eye-open:before{content:"\e105"} +.glyphicon-eye-close:before{content:"\e106"} +.glyphicon-warning-sign:before{content:"\e107"} +.glyphicon-plane:before{content:"\e108"} +.glyphicon-calendar:before{content:"\e109"} +.glyphicon-random:before{content:"\e110"} +.glyphicon-comment:before{content:"\e111"} +.glyphicon-magnet:before{content:"\e112"} +.glyphicon-chevron-up:before{content:"\e113"} +.glyphicon-chevron-down:before{content:"\e114"} +.glyphicon-retweet:before{content:"\e115"} +.glyphicon-shopping-cart:before{content:"\e116"} +.glyphicon-folder-close:before{content:"\e117"} +.glyphicon-folder-open:before{content:"\e118"} +.glyphicon-resize-vertical:before{content:"\e119"} +.glyphicon-resize-horizontal:before{content:"\e120"} +.glyphicon-hdd:before{content:"\e121"} +.glyphicon-bullhorn:before{content:"\e122"} +.glyphicon-bell:before{content:"\e123"} +.glyphicon-certificate:before{content:"\e124"} +.glyphicon-thumbs-up:before{content:"\e125"} +.glyphicon-thumbs-down:before{content:"\e126"} +.glyphicon-hand-right:before{content:"\e127"} +.glyphicon-hand-left:before{content:"\e128"} +.glyphicon-hand-up:before{content:"\e129"} +.glyphicon-hand-down:before{content:"\e130"} +.glyphicon-circle-arrow-right:before{content:"\e131"} +.glyphicon-circle-arrow-left:before{content:"\e132"} +.glyphicon-circle-arrow-up:before{content:"\e133"} +.glyphicon-circle-arrow-down:before{content:"\e134"} +.glyphicon-globe:before{content:"\e135"} +.glyphicon-wrench:before{content:"\e136"} +.glyphicon-tasks:before{content:"\e137"} +.glyphicon-filter:before{content:"\e138"} +.glyphicon-briefcase:before{content:"\e139"} +.glyphicon-fullscreen:before{content:"\e140"} +.glyphicon-dashboard:before{content:"\e141"} +.glyphicon-paperclip:before{content:"\e142"} +.glyphicon-heart-empty:before{content:"\e143"} +.glyphicon-link:before{content:"\e144"} +.glyphicon-phone:before{content:"\e145"} +.glyphicon-pushpin:before{content:"\e146"} +.glyphicon-usd:before{content:"\e148"} +.glyphicon-gbp:before{content:"\e149"} +.glyphicon-sort:before{content:"\e150"} +.glyphicon-sort-by-alphabet:before{content:"\e151"} +.glyphicon-sort-by-alphabet-alt:before{content:"\e152"} +.glyphicon-sort-by-order:before{content:"\e153"} +.glyphicon-sort-by-order-alt:before{content:"\e154"} +.glyphicon-sort-by-attributes:before{content:"\e155"} +.glyphicon-sort-by-attributes-alt:before{content:"\e156"} +.glyphicon-unchecked:before{content:"\e157"} +.glyphicon-expand:before{content:"\e158"} +.glyphicon-collapse-down:before{content:"\e159"} +.glyphicon-collapse-up:before{content:"\e160"} +.glyphicon-log-in:before{content:"\e161"} +.glyphicon-flash:before{content:"\e162"} +.glyphicon-log-out:before{content:"\e163"} +.glyphicon-new-window:before{content:"\e164"} +.glyphicon-record:before{content:"\e165"} +.glyphicon-save:before{content:"\e166"} +.glyphicon-open:before{content:"\e167"} +.glyphicon-saved:before{content:"\e168"} +.glyphicon-import:before{content:"\e169"} +.glyphicon-export:before{content:"\e170"} +.glyphicon-send:before{content:"\e171"} +.glyphicon-floppy-disk:before{content:"\e172"} +.glyphicon-floppy-saved:before{content:"\e173"} +.glyphicon-floppy-remove:before{content:"\e174"} +.glyphicon-floppy-save:before{content:"\e175"} +.glyphicon-floppy-open:before{content:"\e176"} +.glyphicon-credit-card:before{content:"\e177"} +.glyphicon-transfer:before{content:"\e178"} +.glyphicon-cutlery:before{content:"\e179"} +.glyphicon-header:before{content:"\e180"} +.glyphicon-compressed:before{content:"\e181"} +.glyphicon-earphone:before{content:"\e182"} +.glyphicon-phone-alt:before{content:"\e183"} +.glyphicon-tower:before{content:"\e184"} +.glyphicon-stats:before{content:"\e185"} +.glyphicon-sd-video:before{content:"\e186"} +.glyphicon-hd-video:before{content:"\e187"} +.glyphicon-subtitles:before{content:"\e188"} +.glyphicon-sound-stereo:before{content:"\e189"} +.glyphicon-sound-dolby:before{content:"\e190"} +.glyphicon-sound-5-1:before{content:"\e191"} +.glyphicon-sound-6-1:before{content:"\e192"} +.glyphicon-sound-7-1:before{content:"\e193"} +.glyphicon-copyright-mark:before{content:"\e194"} +.glyphicon-registration-mark:before{content:"\e195"} +.glyphicon-cloud-download:before{content:"\e197"} +.glyphicon-cloud-upload:before{content:"\e198"} +.glyphicon-tree-conifer:before{content:"\e199"} +.glyphicon-tree-deciduous:before{content:"\e200"} +.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent} +.dropdown{position:relative} +.dropdown-toggle:focus{outline:0} +.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto} +.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5} +.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.428571429;color:#333;white-space:nowrap} +.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5} +.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#428bca} +.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#999} +.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed} +.open>.dropdown-menu{display:block} +.open>a{outline:0} +.dropdown-menu-right{left:auto;right:0} +.dropdown-menu-left{left:0;right:auto} +.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999} +.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990} +.pull-right>.dropdown-menu{right:0;left:auto} +.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""} +.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px} +@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0} .navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2} +.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:none} +.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px} +.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left} +.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px} +.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0} +.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0} +.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0} +.btn-group>.btn-group{float:left} +.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0} +.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0} +.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0} +.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0} +.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px} +.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px} +.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none} +.btn .caret{margin-left:0} +.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0} +.dropup .btn-lg .caret{border-width:0 5px 5px} +.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%} +.btn-group-vertical>.btn-group>.btn{float:none} +.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0} +.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0} +.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0} +.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0} +.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0} +.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0} +.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0} +.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%} +.btn-group-justified>.btn-group .btn{width:100%} +[data-toggle="buttons"]>.btn>input[type="radio"],[data-toggle="buttons"]>.btn>input[type="checkbox"]{display:none} +.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0} +.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0} +.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px} +textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto} +.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px} +textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto} +.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0} +.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle} +.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px} +.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px} +.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0} +.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0} +.input-group-addon:first-child{border-right:0} +.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0} +.input-group-addon:last-child{border-left:0} +.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px} +.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2} +.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px} +.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px} +.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee} +.nav>li.disabled>a{color:#999}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed} +.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca} +.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5} +.nav>li>a>img{max-width:none} +.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd} +.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default} +.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px} +.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto} +@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px} +.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd} +@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0} .nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}} +.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px} +.nav-pills>li+li{margin-left:2px} +.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca} +.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0} +.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px} +.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto} +@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}} +.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px} +.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd} +@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0} .nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}} +.tab-content>.tab-pane{display:none} +.tab-content>.active{display:block} +.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0} +.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:0}} +@media (min-width:768px){.navbar-header{float:left}} +.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto} +@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important} .navbar-collapse.in{overflow-y:visible} .navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}} +.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}} +.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}} +.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}} +.navbar-fixed-top{top:0;border-width:0 0 1px} +.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0} +.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none} +@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}} +.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:none} +.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px} +.navbar-toggle .icon-bar+.icon-bar{margin-top:4px} +@media (min-width:768px){.navbar-toggle{display:none}} +.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px} +@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px} .navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:right}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px} .navbar-nav.navbar-right:last-child{margin-right:-15px}} +@media (min-width:768px){.navbar-left{float:left !important} .navbar-right{float:right !important}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle} .navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle} .navbar-form .input-group>.form-control{width:100%} .navbar-form .control-label{margin-bottom:0;vertical-align:middle} .navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle} .navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{float:none;margin-left:0} .navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}} +@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}} +.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0} +.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0} +.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px} +.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px} +.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}.navbar-text.navbar-right:last-child{margin-right:0}} +.navbar-default{background-color:#5b9bd5;border-color:#418bce}.navbar-default .navbar-brand{color:#fff}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#e6e6e6;background-color:transparent} +.navbar-default .navbar-text{color:#777} +.navbar-default .navbar-nav>li>a{color:#fff}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#d0d0d0;background-color:transparent} +.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#d0d0d0;background-color:#418bce} +.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent} +.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd} +.navbar-default .navbar-toggle .icon-bar{background-color:#888} +.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#418bce} +.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#418bce;color:#d0d0d0} +@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#fff}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#d0d0d0;background-color:transparent} .navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#d0d0d0;background-color:#418bce} .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}} +.navbar-default .navbar-link{color:#fff}.navbar-default .navbar-link:hover{color:#d0d0d0} +.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent} +.navbar-inverse .navbar-text{color:#999} +.navbar-inverse .navbar-nav>li>a{color:#999}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent} +.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808} +.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent} +.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333} +.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff} +.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010} +.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff} +@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808} .navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808} .navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent} .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808} .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}} +.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff} +.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc} +.breadcrumb>.active{color:#999} +.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.428571429;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px} +.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px} +.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px} +.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd} +.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default} +.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed} +.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px} +.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px} +.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px} +.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px} +.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px} +.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px} +.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px} +.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee} +.pager .next>a,.pager .next>span{float:right} +.pager .previous>a,.pager .previous>span{float:left} +.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed} +.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:hover,.label[href]:focus{color:#fff;text-decoration:none;cursor:pointer} +.label:empty{display:none} +.btn .label{position:relative;top:-1px} +.label-default{background-color:#999}.label-default[href]:hover,.label-default[href]:focus{background-color:#808080} +.label-primary{background-color:#428bca}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#3071a9} +.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44} +.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5} +.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f} +.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c} +.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none} +.btn .badge{position:relative;top:-1px} +.btn-xs .badge{top:0;padding:1px 5px} +a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer} +a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff} +.nav-pills>li>a>.badge{margin-left:3px} +.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit} +.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200} +.container .jumbotron{border-radius:6px} +.jumbotron .container{max-width:100%} +@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px} .jumbotron h1,.jumbotron .h1{font-size:63px}} +.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto} +a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca} +.thumbnail .caption{padding:9px;color:#333} +.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit} +.alert .alert-link{font-weight:bold} +.alert>p,.alert>ul{margin-bottom:0} +.alert>p+p{margin-top:5px} +.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit} +.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3} +.alert-success .alert-link{color:#2b542c} +.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec} +.alert-info .alert-link{color:#245269} +.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5} +.alert-warning .alert-link{color:#66512c} +.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0} +.alert-danger .alert-link{color:#843534} +@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0} to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0} to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)} +.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;transition:width .6s ease} +.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px} +.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite} +.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)} +.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)} +.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)} +.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)} +.media,.media-body{overflow:hidden;zoom:1} +.media,.media .media{margin-top:15px} +.media:first-child{margin-top:0} +.media-object{display:block} +.media-heading{margin:0 0 5px} +.media>.pull-left{margin-right:10px} +.media>.pull-right{margin-left:10px} +.media-list{padding-left:0;list-style:none} +.list-group{margin-bottom:20px;padding-left:0} +.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px} +.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px} +.list-group-item>.badge{float:right} +.list-group-item>.badge+.badge{margin-right:5px} +a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333} +a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;background-color:#f5f5f5} +a.list-group-item.active,a.list-group-item.active:hover,a.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading{color:inherit} +a.list-group-item.active .list-group-item-text,a.list-group-item.active:hover .list-group-item-text,a.list-group-item.active:focus .list-group-item-text{color:#e1edf7} +.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit} +a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6} +a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d} +.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit} +a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3} +a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f} +.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit} +a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc} +a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b} +.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit} +a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc} +a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442} +.list-group-item-heading{margin-top:0;margin-bottom:5px} +.list-group-item-text{margin-bottom:0;line-height:1.3} +.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)} +.panel-body{padding:15px} +.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit} +.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit} +.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px} +.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0} +.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px} +.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px} +.panel-heading+.list-group .list-group-item:first-child{border-top-width:0} +.panel>.table,.panel>.table-responsive>.table{margin-bottom:0} +.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px} +.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px} +.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px} +.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px} +.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd} +.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0} +.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0} +.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0} +.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0} +.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0} +.panel>.table-responsive{border:0;margin-bottom:0} +.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px} +.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd} +.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd} +.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd} +.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd} +.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca} +.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca} +.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6} +.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6} +.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1} +.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1} +.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc} +.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc} +.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1} +.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1} +.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)} +.well-lg{padding:24px;border-radius:6px} +.well-sm{padding:9px;border-radius:3px} +.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)} +button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none} +.modal-open{overflow:hidden} +.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out} +.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0)} +.modal-dialog{position:relative;width:auto;margin:10px} +.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:none} +.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)} +.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)} +.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.428571429px} +.modal-header .close{margin-top:-2px} +.modal-title{margin:0;line-height:1.428571429} +.modal-body{position:relative;padding:20px} +.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0} +.modal-footer .btn-group .btn+.btn{margin-left:-1px} +.modal-footer .btn-block+.btn-block{margin-left:0} +@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto} .modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)} .modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)} +.tooltip.top{margin-top:-3px;padding:5px 0} +.tooltip.right{margin-left:3px;padding:0 5px} +.tooltip.bottom{margin-top:3px;padding:5px 0} +.tooltip.left{margin-left:-3px;padding:0 5px} +.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px} +.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid} +.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000} +.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000} +.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000} +.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000} +.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000} +.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000} +.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000} +.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000} +.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px} +.popover.right{margin-left:10px} +.popover.bottom{margin-top:10px} +.popover.left{margin-left:-10px} +.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0} +.popover-content{padding:9px 14px} +.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid} +.popover>.arrow{border-width:11px} +.popover>.arrow:after{border-width:10px;content:""} +.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff} +.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff} +.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff} +.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px} +.carousel{position:relative} +.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1} +.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block} +.carousel-inner>.active{left:0} +.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%} +.carousel-inner>.next{left:100%} +.carousel-inner>.prev{left:-100%} +.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0} +.carousel-inner>.active.left{left:-100%} +.carousel-inner>.active.right{left:100%} +.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left, color-stop(rgba(0,0,0,0.5) 0), color-stop(rgba(0,0,0,0.0001) 100%));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)} +.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, color-stop(rgba(0,0,0,0.0001) 0), color-stop(rgba(0,0,0,0.5) 100%));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)} +.carousel-control:hover,.carousel-control:focus{outline:none;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)} +.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block} +.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%} +.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%} +.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif} +.carousel-control .icon-prev:before{content:'\2039'} +.carousel-control .icon-next:before{content:'\203a'} +.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)} +.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff} +.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none} +@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px} .carousel-caption{left:20%;right:20%;padding-bottom:30px} .carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{content:" ";display:table} +.clearfix:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both} +.center-block{display:block;margin-left:auto;margin-right:auto} +.pull-right{float:right !important} +.pull-left{float:left !important} +.hide{display:none !important} +.show{display:block !important} +.invisible{visibility:hidden} +.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0} +.hidden{display:none !important;visibility:hidden !important} +.affix{position:fixed} +@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important} +@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table} tr.visible-xs{display:table-row !important} th.visible-xs,td.visible-xs{display:table-cell !important}} +@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table} tr.visible-sm{display:table-row !important} th.visible-sm,td.visible-sm{display:table-cell !important}} +@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table} tr.visible-md{display:table-row !important} th.visible-md,td.visible-md{display:table-cell !important}} +@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table} tr.visible-lg{display:table-row !important} th.visible-lg,td.visible-lg{display:table-cell !important}} +@media (max-width:767px){.hidden-xs{display:none !important}} +@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}} +@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}} +@media (min-width:1200px){.hidden-lg{display:none !important}} +.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table} tr.visible-print{display:table-row !important} th.visible-print,td.visible-print{display:table-cell !important}} +@media print{.hidden-print{display:none !important}} diff --git a/Sevomin.News/favicon.ico b/Sevomin.News/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a3a799985c43bc7309d701b2cad129023377dc71 GIT binary patch literal 32038 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�XNwE5J6=5Mi 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 Xh2*B!7aOtRW!ypZ06a`$ruf*vy!}RZ literal 0 HcmV?d00001 diff --git a/Sevomin.News/fonts/WebYekan.svg b/Sevomin.News/fonts/WebYekan.svg new file mode 100644 index 0000000..9893ad6 --- /dev/null +++ b/Sevomin.News/fonts/WebYekan.svg @@ -0,0 +1,612 @@ + + + + +Created by FontForge 1853326994 at Sun Oct 13 04:53:50 2013 + By U-zoghal-god\zoghal,S-1-5-21-2758449068-1321902542-3097588897-1003 +(c) 1392 Rita Development Corpertion(RitaCo) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Sevomin.News/fonts/WebYekan.ttf b/Sevomin.News/fonts/WebYekan.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ba028012ad7623ea2c04a3636418d4c3fe42d722 GIT binary patch literal 49416 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 Y6WUuNAAN^^AJ}=Zmw&&#e$SBq0TNR=NB{r; literal 0 HcmV?d00001 diff --git a/Sevomin.News/fonts/WebYekan.woff b/Sevomin.News/fonts/WebYekan.woff new file mode 100644 index 0000000000000000000000000000000000000000..068520fd2f074a4501049c8d817bd2343ff1393b GIT binary patch literal 29012 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

!oRptb@n+ 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 literal 0 HcmV?d00001 diff --git a/Sevomin.News/fonts/glyphicons-halflings-regular.svg b/Sevomin.News/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 0000000..e3e2dc7 --- /dev/null +++ b/Sevomin.News/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Sevomin.News/fonts/glyphicons-halflings-regular.ttf b/Sevomin.News/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..67fa00bf83801d2fa568546b982c80d27f6ef74e GIT binary patch literal 41280 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

PBK;&Wcg|NX{>QR@W3{K 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 literal 0 HcmV?d00001 diff --git a/Sevomin.News/fonts/glyphicons-halflings-regular.woff b/Sevomin.News/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..8c54182aa5d4d1ab3c9171976b615c1dcb1dc187 GIT binary patch literal 23320 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 mX4Rts$lpdq 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 + + + + + + + + + \ No newline at end of file diff --git a/Sevomin.News/posts/05e94568-232b-42d2-81c1-d4bf5ef46b5d.xml b/Sevomin.News/posts/05e94568-232b-42d2-81c1-d4bf5ef46b5d.xml new file mode 100644 index 0000000..3038830 --- /dev/null +++ b/Sevomin.News/posts/05e94568-232b-42d2-81c1-d4bf5ef46b5d.xml @@ -0,0 +1,14 @@ + + + این یک پست جدید است + ---- + sevomin + 2014-04-30 12:54:13 + 2014-04-30 12:54:13 + بله این پست بسیار خوب و وزین است + true + + + + + \ No newline at end of file diff --git a/Sevomin.News/posts/504c5b77-1965-476b-8405-0e47db1309d1.xml b/Sevomin.News/posts/504c5b77-1965-476b-8405-0e47db1309d1.xml new file mode 100644 index 0000000..b3f245f --- /dev/null +++ b/Sevomin.News/posts/504c5b77-1965-476b-8405-0e47db1309d1.xml @@ -0,0 +1,14 @@ + + + پستی در پست‌های موجود + --- + sevomin + 2014-04-30 12:52:38 + 2014-04-30 12:52:38 + <div style="text-align: right;direction:rtl"><span style="line-height: 1.428571429;">این پست شامل کلیه پست‌هایی می‌باشد که در وب سایت نمایش داده خواهد شد.</span></div><div style="text-align: right;"></div> + true + + + + + \ No newline at end of file diff --git a/Sevomin.News/posts/files/9fa751db-c036-435b-97e3-bd6373b0991b.xml b/Sevomin.News/posts/files/9fa751db-c036-435b-97e3-bd6373b0991b.xml new file mode 100644 index 0000000..ef74c0c --- /dev/null +++ b/Sevomin.News/posts/files/9fa751db-c036-435b-97e3-bd6373b0991b.xml @@ -0,0 +1,61 @@ + + + Web Developer Checklist + chrome-extension-web-developer-checklist + + 2013-06-06 11:44:23 + 2014-04-16 19:00:53 + <p>Earlier this year, <a href="http://sedodream.com/" target="_blank">Sayed</a> and I released <a href="http://webdevchecklist.com/" target="_blank">Web Developer Checklist</a> to help web developer adhere to best practices. Checklists like these can be really helpful to make sure we don’t forget anything before releasing new or updated websites. </p> <p><img width="279" height="580" title="image" style="padding-left: 10px; float: right;" alt="image" src="/posts/files/image.png" />Now we’re introducing Web Developer Checklist as a <a href="https://chrome.google.com/webstore/detail/web-developer-checklist/iahamcpedabephpcgkeikbclmaljebjp" target="_blank">Chrome extension</a> that can automate a big portion of the checklist. The extension let’s you run checks for various best practices on any website - including your own running from localhost.</p> <p>It performs a series of checks by analyzing the DOM as well as integrating with 3<sup>rd</sup>-party services like <a href="https://developers.google.com/speed/pagespeed/" target="_blank">Google PageSpeed</a>.</p> <h2>Next steps</h2> <p>This first version of the <a href="https://chrome.google.com/webstore/detail/web-developer-checklist/iahamcpedabephpcgkeikbclmaljebjp" target="_blank">Web Developer Checklist Chrome extension</a> does a series of really valuable checks. The next releases will have even more.</p> <p>Specifically, we’re looking at adding:</p> <ul> <li>HTML validation </li><li>CSS validation </li><li>Accessibility validation </li><li>JSHint </li><li>CssLint </li><li>Guidance for each item</li></ul> <p>We think these checks would be hugely beneficial. If you have ideas for other checks that can be automated, please let us know in the comments below.</p> <h2>Open source</h2> <p>The Web Developer Checklist Chrome extension is open source and hosted on our <a href="https://github.com/ligershark/BestPracticesChromeExtension" target="_blank">GitHub org</a>. As always, pull requests are more than welcome.</p> + true + + Chrome + Best Practices + + + + Jason + jason.irwin@hotmail.com + + + + 2013-06-06 12:14:47 + Very useful extension. In the few minutes I&#39;ve played with it so far I&#39;ve found a few items that can be improved on my site. I&#39;d love to see some guidance baked into the tool. For example, for &quot;Add meaning with Microdata&quot; it would be beneficial to provide a link for further reading/some rudimentary tips, etc. <br /><br />Great work - I look forward to seeing this extension evolving! + + + Mads Kristensen + post@madskristensen.dk + + + + 2013-06-06 12:23:46 + Yes, I should update the roadmap because that is exactly what we are planning for as well. Thanks for the heads up! + + + Maiis + evuigner@gmail.com + + + + 2013-06-06 12:55:53 + This page dosen&#39;t get a green status :p + + + Mads Kristensen + post@madskristensen.dk + + + + 2013-06-06 13:12:43 + Yeah, that is rather ironic :) + + + Maiis + evuigner@gmail.com + + + + 2013-06-06 14:55:53 + A new not yet approved comment. + + + \ No newline at end of file diff --git a/Sevomin.News/scripts/_references.js b/Sevomin.News/scripts/_references.js new file mode 100644 index 0000000..ade845b --- /dev/null +++ b/Sevomin.News/scripts/_references.js @@ -0,0 +1,5 @@ +/// +/// +/// +/// +/// diff --git a/Sevomin.News/scripts/admin.js b/Sevomin.News/scripts/admin.js new file mode 100644 index 0000000..52de16c --- /dev/null +++ b/Sevomin.News/scripts/admin.js @@ -0,0 +1,226 @@ +(function ($) { + + // #region Helpers + + function ConvertMarkupToValidXhtml(markup) { + var docImplementation = document.implementation; + var htmlDocument = docImplementation.createHTMLDocument("temp"); + var xHtmlDocument = docImplementation.createDocument('http://www.w3.org/1999/xhtml', 'html', null); + var xhtmlBody = xHtmlDocument.createElementNS('http://www.w3.org/1999/xhtml', 'body'); + + htmlDocument.body.innerHTML = "

"; + + xHtmlDocument.documentElement.appendChild(xhtmlBody); + xHtmlDocument.importNode(htmlDocument.body, true); + xhtmlBody.appendChild(htmlDocument.body.firstChild); + + /
(.*?)<\/div><\/body>/im.exec(xHtmlDocument.documentElement.innerHTML); + return RegExp.$1; + } + + // #endregion + + var postId, isNew, + txtTitle, txtContent, txtMessage, txtImage, chkPublish, + btnNew, btnEdit, btnDelete, btnSave, btnCancel, + + editPost = function () { + txtTitle.attr('contentEditable', true); + txtContent.wysiwyg({ hotKeys: {}, activeToolbarClass: "active" }); + txtContent.css({ minHeight: "400px" }); + txtContent.focus(); + + btnNew.attr("disabled", true); + btnEdit.attr("disabled", true); + btnSave.removeAttr("disabled"); + btnCancel.removeAttr("disabled"); + chkPublish.removeAttr("disabled"); + + showCategoriesForEditing(); + + toggleSourceView(); + + $("#tools").fadeIn().css("display", "inline-block"); + }, + cancelEdit = function () { + if (isNew) { + if (confirm("Do you want to leave this page?")) { + history.back(); + } + } else { + txtTitle.removeAttr('contentEditable'); + txtContent.removeAttr('contentEditable'); + btnCancel.focus(); + + btnNew.removeAttr("disabled"); + btnEdit.removeAttr("disabled"); + btnSave.attr("disabled", true); + btnCancel.attr("disabled", true); + chkPublish.attr("disabled", true); + + showCategoriesForDisplay(); + + $("#tools").fadeOut(); + } + }, + toggleSourceView = function () { + $(".source").bind("click", function () { + var self = $(this); + if (self.attr("data-cmd") === "source") { + self.attr("data-cmd", "design"); + self.addClass("active"); + txtContent.text(txtContent.html()); + } else { + self.attr("data-cmd", "source"); + self.removeClass("active"); + txtContent.html(txtContent.text()); + } + }); + }, + savePost = function (e) { + if ($(".source").attr("data-cmd") === "design") { + $(".source").click(); + } + + txtContent.cleanHtml(); + + var parsedDOM; + + /* IE9 doesn't support text/html MimeType https://github.com/madskristensen/MiniBlog/issues/35 + + parsedDOM = new DOMParser().parseFromString(txtContent.html(), 'text/html'); + parsedDOM = new XMLSerializer().serializeToString(parsedDOM); + + /(.*)<\/body>/im.exec(parsedDOM); + parsedDOM = RegExp.$1; + + */ + + /* When its time to drop IE9 support toggle commented region with + the following statement and ConvertMarkupToXhtml function */ + parsedDOM = ConvertMarkupToValidXhtml(txtContent.html()); + + $.post("/post.ashx?mode=save", { + id: postId, + isPublished: chkPublish[0].checked, + title: txtTitle.text().trim(), + content: parsedDOM, + categories: getPostCategories(), + token: document.querySelector("[data-token]").getAttribute("data-token") + }) + .success(function (data) { + if (isNew) { + location.href = data; + return; + } + + showMessage(true, "The post was saved successfully"); + cancelEdit(e); + }) + .fail(function (data) { + if (data.status === 409) { + showMessage(false, "The title is already in use"); + } else { + showMessage(false, "Something bad happened. Server reported " + data.status + " " + data.statusText); + } + }); + }, + deletePost = function () { + if (confirm("Are you sure you want to delete this post?")) { + $.post("/post.ashx?mode=delete", { id: postId, token: document.querySelector("[data-token]").getAttribute("data-token") }) + .success(function () { location.href = "/"; }) + .fail(function () { showMessage(false, "Something went wrong. Please try again"); }); + } + }, + showMessage = function (success, message) { + var className = success ? "alert-success" : "alert-error"; + txtMessage.addClass(className); + txtMessage.text(message); + txtMessage.parent().fadeIn(); + + setTimeout(function () { + txtMessage.parent().fadeOut("slow", function () { + txtMessage.removeClass(className); + }); + }, 4000); + }, + getPostCategories = function () { + var categories = ''; + + if ($("#txtCategories").length > 0) { + categories = $("#txtCategories").val(); + } else { + $("ul.categories li a").each(function (index, item) { + if (categories.length > 0) { + categories += ","; + } + categories += $(item).html(); + }); + } + return categories; + }, + showCategoriesForEditing = function () { + var firstItemPassed = false; + var categoriesString = getPostCategories(); + $("ul.categories li").each(function (index, item) { + if (!firstItemPassed) { + firstItemPassed = true; + } else { + $(item).remove(); + } + }); + $("ul.categories").append("
  • "); + $("#txtCategories").val(categoriesString); + }, + showCategoriesForDisplay = function () { + if ($("#txtCategories").length > 0) { + var categoriesArray = $("#txtCategories").val().split(','); + $("#txtCategories").parent().remove(); + + $.each(categoriesArray, function (index, category) { + $("ul.categories").append('
  • ' + category + '
  • '); + }); + } + }; + + isNew = location.pathname.replace(/\//g, "") === "postnew"; + + postId = $("[itemprop~='blogPost']").attr("data-id"); + + txtTitle = $("[itemprop~='blogPost'] [itemprop~='name']"); + txtContent = $("[itemprop~='articleBody']"); + txtMessage = $("#admin .alert"); + txtImage = $("#admin #txtImage"); + + btnNew = $("#btnNew"); + btnEdit = $("#btnEdit").bind("click", editPost); + btnDelete = $("#btnDelete").bind("click", deletePost); + btnSave = $("#btnSave").bind("click", savePost); + btnCancel = $("#btnCancel").bind("click", cancelEdit); + chkPublish = $("#ispublished").find("input[type=checkbox]"); + + $(document).keyup(function (e) { + if (!document.activeElement.isContentEditable) { + if (e.keyCode === 46) { // Delete key + deletePost(); + } else if (e.keyCode === 27) { // ESC key + cancelEdit(); + } + } + }); + + $('.uploadimage').click(function (e) { + e.preventDefault(); + $('#txtImage').click(); + }); + + if (isNew) { + editPost(); + $("#ispublished").fadeIn(); + chkPublish[0].checked = true; + } else if (txtTitle !== null && txtTitle.length === 1 && location.pathname.length > 1) { + btnEdit.removeAttr("disabled"); + btnDelete.removeAttr("disabled"); + $("#ispublished").css({ "display": "inline" }); + } +})(jQuery); diff --git a/Sevomin.News/scripts/bootstrap-wysiwyg.js b/Sevomin.News/scripts/bootstrap-wysiwyg.js new file mode 100644 index 0000000..cb8f05e --- /dev/null +++ b/Sevomin.News/scripts/bootstrap-wysiwyg.js @@ -0,0 +1,217 @@ +/* http://github.com/mindmup/bootstrap-wysiwyg */ +/*global jQuery, $, FileReader*/ +/*jslint browser:true*/ +(function ($) { + 'use strict'; + var readFileIntoDataUrl = function (fileInfo) { + var loader = $.Deferred(), + fReader = new FileReader(); + fReader.onload = function (e) { + loader.resolve(e.target.result); + }; + fReader.onerror = loader.reject; + fReader.onprogress = loader.notify; + fReader.readAsDataURL(fileInfo); + return loader.promise(); + }; + $.fn.cleanHtml = function () { + var html = $(this).html(); + return html && html.replace(/(
    |\s|

    <\/div>| )*$/, ''); + }; + $.fn.wysiwyg = function (userOptions) { + var editor = this, + selectedRange, + options, + toolbarBtnSelector, + updateToolbar = function () { + if (options.activeToolbarClass) { + $(options.toolbarSelector).find(toolbarBtnSelector).each(function () { + var command = $(this).data(options.commandRole); + try { + if (document.queryCommandState(command)) { + $(this).addClass(options.activeToolbarClass); + } else { + $(this).removeClass(options.activeToolbarClass); + } + } + catch (ex) { }; + }); + } + }, + execCommand = function (commandWithArgs, valueArg) { + var commandArr = commandWithArgs.split(' '), + command = commandArr.shift(), + args = commandArr.join(' ') + (valueArg || ''); + if (commandWithArgs === "createLink") + args = prompt("Enter the URL for this link:", "http://"); + document.execCommand(command, 0, args); + updateToolbar(); + }, + bindHotkeys = function (hotKeys) { + $.each(hotKeys, function (hotkey, command) { + editor.keydown(hotkey, function (e) { + if (editor.attr('contenteditable') && editor.is(':visible')) { + e.preventDefault(); + e.stopPropagation(); + execCommand(command); + } + }).keyup(hotkey, function (e) { + if (editor.attr('contenteditable') && editor.is(':visible')) { + e.preventDefault(); + e.stopPropagation(); + } + }); + }); + }, + getCurrentRange = function () { + var sel = window.getSelection(); + if (sel.getRangeAt && sel.rangeCount) { + return sel.getRangeAt(0); + } + }, + saveSelection = function () { + selectedRange = getCurrentRange(); + }, + restoreSelection = function () { + var selection = window.getSelection(); + if (selectedRange) { + try { + selection.removeAllRanges(); + } catch (ex) { + document.body.createTextRange().select(); + document.selection.empty(); + } + + selection.addRange(selectedRange); + } + }, + insertFiles = function (files) { + editor.focus(); + $.each(files, function (idx, fileInfo) { + if (/^image\//.test(fileInfo.type)) { + $.when(options.readFileIntoUrl(fileInfo)).done(function (dataUrl) { + execCommand('insertimage', dataUrl); + }).fail(function (e) { + options.fileUploadError("file-reader", e); + }); + } else { + $.when(options.readFileIntoUrl(fileInfo)).done(function (dataUrl) { + //execCommand('inserthtml', 'Download'); + var frag = document.createDocumentFragment(); + var node = document.createElement("a"); + node.innerText = fileInfo.name; + node.href = dataUrl; + frag.appendChild(node); + window.getSelection().getRangeAt(0).insertNode(node); + }).fail(function (e) { + options.fileUploadError("file-reader", e); + }); + //options.fileUploadError("unsupported-file-type", fileInfo.type); + } + }); + }, + markSelection = function (input, color) { + restoreSelection(); + if (document.queryCommandSupported('hiliteColor')) { + document.execCommand('hiliteColor', 0, color || 'transparent'); + } + saveSelection(); + input.data(options.selectionMarker, color); + }, + bindToolbar = function (toolbar, options) { + toolbar.find(toolbarBtnSelector).click(function () { + restoreSelection(); + editor.focus(); + execCommand($(this).data(options.commandRole)); + saveSelection(); + }); + toolbar.find('[data-toggle=dropdown]').click(restoreSelection); + + toolbar.find('input[type=text][data-' + options.commandRole + ']').on('webkitspeechchange change', function () { + var newValue = this.value; /* ugly but prevents fake double-calls due to selection restoration */ + this.value = ''; + restoreSelection(); + if (newValue) { + editor.focus(); + execCommand($(this).data(options.commandRole), newValue); + } + saveSelection(); + }).on('focus', function () { + var input = $(this); + if (!input.data(options.selectionMarker)) { + markSelection(input, options.selectionColor); + input.focus(); + } + }).on('blur', function () { + var input = $(this); + if (input.data(options.selectionMarker)) { + markSelection(input, false); + } + }); + toolbar.find('input[type=file][data-' + options.commandRole + ']').change(function () { + restoreSelection(); + if (this.type === 'file' && this.files && this.files.length > 0) { + insertFiles(this.files); + } + saveSelection(); + this.value = ''; + }); + }, + initFileDrops = function () { + editor.on('dragenter dragover', false) + .on('drop', function (e) { + var dataTransfer = e.originalEvent.dataTransfer; + e.stopPropagation(); + e.preventDefault(); + if (dataTransfer && dataTransfer.files && dataTransfer.files.length > 0) { + insertFiles(dataTransfer.files); + } + }); + }; + options = $.extend({}, $.fn.wysiwyg.defaults, userOptions); + toolbarBtnSelector = 'a[data-' + options.commandRole + '],button[data-' + options.commandRole + '],input[type=button][data-' + options.commandRole + ']'; + bindHotkeys(options.hotKeys); + if (options.dragAndDropImages) { + initFileDrops(); + } + bindToolbar($(options.toolbarSelector), options); + editor.attr('contenteditable', true) + .on('mouseup keyup mouseout', function () { + saveSelection(); + updateToolbar(); + }); + $(window).bind('touchend', function (e) { + var isInside = (editor.is(e.target) || editor.has(e.target).length > 0), + currentRange = getCurrentRange(), + clear = currentRange && (currentRange.startContainer === currentRange.endContainer && currentRange.startOffset === currentRange.endOffset); + if (!clear || isInside) { + saveSelection(); + updateToolbar(); + } + }); + return this; + }; + $.fn.wysiwyg.defaults = { + hotKeys: { + 'ctrl+b meta+b': 'bold', + 'ctrl+i meta+i': 'italic', + 'ctrl+u meta+u': 'underline', + 'ctrl+z meta+z': 'undo', + 'ctrl+y meta+y meta+shift+z': 'redo', + 'ctrl+l meta+l': 'justifyleft', + 'ctrl+r meta+r': 'justifyright', + 'ctrl+e meta+e': 'justifycenter', + 'ctrl+j meta+j': 'justifyfull', + 'shift+tab': 'outdent', + 'tab': 'indent' + }, + toolbarSelector: '[data-role=editor-toolbar]', + commandRole: 'edit', + activeToolbarClass: 'btn-info', + selectionMarker: 'edit-focus-marker', + selectionColor: 'darkgrey', + dragAndDropImages: true, + fileUploadError: function (reason, detail) { console.log("File upload error", reason, detail); }, + readFileIntoUrl: readFileIntoDataUrl + }; +}(window.jQuery)); \ No newline at end of file diff --git a/Sevomin.News/scripts/comments.js b/Sevomin.News/scripts/comments.js new file mode 100644 index 0000000..5d1a6f6 --- /dev/null +++ b/Sevomin.News/scripts/comments.js @@ -0,0 +1,271 @@ +/* globals NodeList, HTMLCollection */ + +(function () { + var postId = null; + + //#region Helpers + + function objectToUrl(obj) { + var string = ''; + + for (var prop in obj) { + if (obj.hasOwnProperty(prop)) { + string += prop + '=' + obj[prop].replace(/ /g, '+') + '&'; + } + } + + return string.substring(0, string.length - 1); + } + + var AsynObject = AsynObject ? AsynObject : {}; + + AsynObject.ajax = function (url, callback) { + var ajaxRequest = AsynObject.getAjaxRequest(callback); + ajaxRequest.open("GET", url, true); + ajaxRequest.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); + ajaxRequest.send(null); + }; + + AsynObject.postAjax = function (url, callback, data) { + var ajaxRequest = AsynObject.getAjaxRequest(callback); + ajaxRequest.open("POST", url, true); + ajaxRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); + ajaxRequest.send(objectToUrl(data)); + }; + + AsynObject.getAjaxRequest = function (callback) { + + var ajaxRequest = new XMLHttpRequest(); + + ajaxRequest.onreadystatechange = function () { + if (ajaxRequest.readyState > 1 && ajaxRequest.status > 0) { + callback(ajaxRequest.readyState, ajaxRequest.status, ajaxRequest.responseText); + } + }; + + return ajaxRequest; + }; + + function hasClass(elem, className) { + return new RegExp(' ' + className + ' ').test(' ' + elem.className + ' '); + } + + function addClass(elem, className) { + if (!hasClass(elem, className)) { + elem.className += ' ' + className; + } + } + + function removeClass(elem, className) { + var newClass = ' ' + elem.className.replace(/[\t\r\n]/g, ' ') + ' '; + if (hasClass(elem, className)) { + while (newClass.indexOf(' ' + className + ' ') >= 0) { + newClass = newClass.replace(' ' + className + ' ', ' '); + } + elem.className = newClass.replace(/^\s+|\s+$/g, ''); + } + } + + function toDOM(htmlString) { + var wrapper = document.createElement('div'); + wrapper.innerHTML = htmlString; + return wrapper.children; + } + + function getParentsByAttribute(element, attr, value) { + var arr = []; + + while (element) { + element = element.parentNode; + if (element.hasAttribute(attr) && element.getAttribute(attr) === value) { + arr.push(element); + } + if (!element.parentNode.parentNode) { + break; + } + } + + return arr; + } + + Element.prototype.remove = function () { + this.parentElement.removeChild(this); + }; + + NodeList.prototype.remove = HTMLCollection.prototype.remove = function () { + for (var i = 0, len = this.length; i < len; i++) { + if (this[i] && this[i].parentElement) { + this[i].parentElement.removeChild(this[i]); + } + } + }; + + function slide(thisObj, direction, callback) { + if (direction === "Up") { + thisObj.style.height = '0px'; + } else { + var clone = thisObj.cloneNode(true); + + clone.style.position = 'absolute'; + clone.style.visibility = 'hidden'; + clone.style.height = 'auto'; + + addClass(clone, 'slideClone col-md-6 col-md-offset-3'); + + document.body.appendChild(clone); + + var slideClone = document.getElementsByClassName("slideClone")[0]; + var newHeight = slideClone.clientHeight; + + slideClone.remove(); + thisObj.style.height = newHeight + 'px'; + if (callback) { + setTimeout(function () { + callback(); + }, 500); + } + } + } + + //#endregion + + var endpoint = "/comment.ashx"; + + function deleteComment(commentId, element) { + + if (confirm("Do you want to delete this comment?")) { + AsynObject.postAjax(endpoint, function (state, status) { + if (state === 4 && status === 200) { + slide(element, "Up", function () { + element.remove(); + }); + return; + } else if (status !== 200) { + alert("Something went wrong. Please try again"); + } + }, { + mode: "delete", + postId: postId, + commentId: commentId, + token: document.querySelector("[data-token]").getAttribute("data-token") + }); + } + } + + function approveComment(commentId, element) { + + AsynObject.postAjax(endpoint, function (state, status) { + if (state === 4 && status === 200) { + element.remove(); + return; + } else if (status !== 200) { + alert("Something went wrong. Please try again"); + } + }, { + mode: "approve", + postId: postId, + commentId: commentId, + token: document.querySelector("[data-token]").getAttribute("data-token") + }); + } + + function saveComment(name, email, website, content, callback) { + + if (localStorage) { + localStorage.setItem("name", name); + localStorage.setItem("email", email); + localStorage.setItem("website", website); + } + + AsynObject.postAjax(endpoint, function (state, status, data) { + + var elemStatus = document.getElementById("status"); + if (state === 4 && status === 200) { + elemStatus.innerHTML = "Your comment has been added"; + removeClass(elemStatus, "alert-danger"); + addClass(elemStatus, "alert-success"); + + document.getElementById("commentcontent").value = ""; + + var comment = toDOM(data)[0]; + comment.style.height = "0px"; + var elemComments = document.getElementById("comments"); + elemComments.appendChild(comment); + slide(comment, "Down"); + callback(true); + + return; + } else if (status !== 200) { + addClass(elemStatus, "alert-danger"); + elemStatus.innerText = "Unable to add comment"; + callback(false); + } + }, { + mode: "save", + postId: postId, + name: name, + email: email, + website: website, + content: content, + token: document.querySelector("[data-token]").getAttribute("data-token"), + }); + + } + + function initialize() { + postId = document.querySelector("[itemprop=blogPost]").getAttribute("data-id"); + var email = document.getElementById("commentemail"); + var name = document.getElementById("commentname"); + var website = document.getElementById("commenturl"); + var content = document.getElementById("commentcontent"); + var commentForm = document.getElementById("commentform"); + + var allComments = document.querySelectorAll("[itemprop=comment]"); + for (var i = 0; i < allComments.length; ++i) { + allComments[i].style.height = allComments[i].clientHeight + 'px'; + } + + commentForm.onsubmit = function (e) { + e.preventDefault(); + var button = e.target; + button.setAttribute("disabled", true); + + saveComment(name.value, email.value, website.value, content.value, function () { + button.removeAttribute("disabled"); + }); + }; + + website.addEventListener("keyup", function (e) { + var w = e.target; + if (w.value.trim().length >= 4 && w.value.indexOf("http") === -1) { + w.value = "http://" + w.value; + } + }); + + window.addEventListener("click", function (e) { + var tag = e.target; + + if (hasClass(tag, "deletecomment")) { + var comment = getParentsByAttribute(tag, "itemprop", "comment")[0]; + deleteComment(comment.getAttribute("data-id"), comment); + } + if (hasClass(tag, "approvecomment")) { + var comment = getParentsByAttribute(tag, "itemprop", "comment")[0]; + approveComment(comment.getAttribute("data-id"), tag); + } + }); + + if (localStorage) { + email.value = localStorage.getItem("email"); + website.value = localStorage.getItem("website"); + + if (name.value.length === 0) { + name.value = localStorage.getItem("name"); + } + } + } + + if (document.getElementById("commentform")) { + initialize(); + } +})(); diff --git a/Sevomin.News/scripts/jquery-2.0.2.intellisense.js b/Sevomin.News/scripts/jquery-2.0.2.intellisense.js new file mode 100644 index 0000000..a88b6c6 --- /dev/null +++ b/Sevomin.News/scripts/jquery-2.0.2.intellisense.js @@ -0,0 +1,2670 @@ +intellisense.annotate(jQuery, { + 'ajax': function() { + /// + /// Perform an asynchronous HTTP (Ajax) request. + /// A string containing the URL to which the request is sent. + /// A set of key/value pairs that configure the Ajax request. All settings are optional. A default can be set for any option with $.ajaxSetup(). See jQuery.ajax( settings ) below for a complete list of all settings. + /// + /// + /// + /// Perform an asynchronous HTTP (Ajax) request. + /// A set of key/value pairs that configure the Ajax request. All settings are optional. A default can be set for any option with $.ajaxSetup(). + /// + /// + }, + 'ajaxPrefilter': function() { + /// + /// Handle custom Ajax options or modify existing options before each request is sent and before they are processed by $.ajax(). + /// An optional string containing one or more space-separated dataTypes + /// A handler to set default values for future Ajax requests. + /// + }, + 'ajaxSetup': function() { + /// + /// Set default values for future Ajax requests. Its use is not recommended. + /// A set of key/value pairs that configure the default Ajax request. All options are optional. + /// + }, + 'ajaxTransport': function() { + /// + /// Creates an object that handles the actual transmission of Ajax data. + /// A string identifying the data type to use + /// A handler to return the new transport object to use with the data type provided in the first argument. + /// + }, + 'boxModel': function() { + /// Deprecated in jQuery 1.3 (see jQuery.support). States if the current page, in the user's browser, is being rendered using the W3C CSS Box Model. + /// + }, + 'browser': function() { + /// Contains flags for the useragent, read from navigator.userAgent. This property was removed in jQuery 1.9 and is available only through the jQuery.migrate plugin. Please try to use feature detection instead. + /// + }, + 'browser.version': function() { + /// The version number of the rendering engine for the user's browser. This property was removed in jQuery 1.9 and is available only through the jQuery.migrate plugin. + /// + }, + 'Callbacks': function() { + /// + /// A multi-purpose callbacks list object that provides a powerful way to manage callback lists. + /// An optional list of space-separated flags that change how the callback list behaves. + /// + /// + }, + 'contains': function() { + /// + /// Check to see if a DOM element is a descendant of another DOM element. + /// The DOM element that may contain the other element. + /// The DOM element that may be contained by (a descendant of) the other element. + /// + /// + }, + 'cssHooks': function() { + /// Hook directly into jQuery to override how particular CSS properties are retrieved or set, normalize CSS property naming, or create custom properties. + /// + }, + 'data': function() { + /// + /// Returns value at named data store for the element, as set by jQuery.data(element, name, value), or the full data store for the element. + /// The DOM element to query for the data. + /// Name of the data stored. + /// + /// + /// + /// Returns value at named data store for the element, as set by jQuery.data(element, name, value), or the full data store for the element. + /// The DOM element to query for the data. + /// + /// + }, + 'Deferred': function() { + /// + /// A constructor function that returns a chainable utility object with methods to register multiple callbacks into callback queues, invoke callback queues, and relay the success or failure state of any synchronous or asynchronous function. + /// A function that is called just before the constructor returns. + /// + /// + }, + 'dequeue': function() { + /// + /// Execute the next function on the queue for the matched element. + /// A DOM element from which to remove and execute a queued function. + /// A string containing the name of the queue. Defaults to fx, the standard effects queue. + /// + }, + 'each': function() { + /// + /// A generic iterator function, which can be used to seamlessly iterate over both objects and arrays. Arrays and array-like objects with a length property (such as a function's arguments object) are iterated by numeric index, from 0 to length-1. Other objects are iterated via their named properties. + /// The object or array to iterate over. + /// The function that will be executed on every object. + /// + /// + }, + 'error': function() { + /// + /// Takes a string and throws an exception containing it. + /// The message to send out. + /// + }, + 'extend': function() { + /// + /// Merge the contents of two or more objects together into the first object. + /// An object that will receive the new properties if additional objects are passed in or that will extend the jQuery namespace if it is the sole argument. + /// An object containing additional properties to merge in. + /// Additional objects containing properties to merge in. + /// + /// + /// + /// Merge the contents of two or more objects together into the first object. + /// If true, the merge becomes recursive (aka. deep copy). + /// The object to extend. It will receive the new properties. + /// An object containing additional properties to merge in. + /// Additional objects containing properties to merge in. + /// + /// + }, + 'fn.extend': function() { + /// + /// Merge the contents of an object onto the jQuery prototype to provide new jQuery instance methods. + /// An object to merge onto the jQuery prototype. + /// + /// + }, + 'get': function() { + /// + /// Load data from the server using a HTTP GET request. + /// A string containing the URL to which the request is sent. + /// A plain object or string that is sent to the server with the request. + /// A callback function that is executed if the request succeeds. + /// The type of data expected from the server. Default: Intelligent Guess (xml, json, script, or html). + /// + /// + }, + 'getJSON': function() { + /// + /// Load JSON-encoded data from the server using a GET HTTP request. + /// A string containing the URL to which the request is sent. + /// A plain object or string that is sent to the server with the request. + /// A callback function that is executed if the request succeeds. + /// + /// + }, + 'getScript': function() { + /// + /// Load a JavaScript file from the server using a GET HTTP request, then execute it. + /// A string containing the URL to which the request is sent. + /// A callback function that is executed if the request succeeds. + /// + /// + }, + 'globalEval': function() { + /// + /// Execute some JavaScript code globally. + /// The JavaScript code to execute. + /// + }, + 'grep': function() { + /// + /// Finds the elements of an array which satisfy a filter function. The original array is not affected. + /// The array to search through. + /// The function to process each item against. The first argument to the function is the item, and the second argument is the index. The function should return a Boolean value. this will be the global window object. + /// If "invert" is false, or not provided, then the function returns an array consisting of all elements for which "callback" returns true. If "invert" is true, then the function returns an array consisting of all elements for which "callback" returns false. + /// + /// + }, + 'hasData': function() { + /// + /// Determine whether an element has any jQuery data associated with it. + /// A DOM element to be checked for data. + /// + /// + }, + 'holdReady': function() { + /// + /// Holds or releases the execution of jQuery's ready event. + /// Indicates whether the ready hold is being requested or released + /// + }, + 'inArray': function() { + /// + /// Search for a specified value within an array and return its index (or -1 if not found). + /// The value to search for. + /// An array through which to search. + /// The index of the array at which to begin the search. The default is 0, which will search the whole array. + /// + /// + }, + 'isArray': function() { + /// + /// Determine whether the argument is an array. + /// Object to test whether or not it is an array. + /// + /// + }, + 'isEmptyObject': function() { + /// + /// Check to see if an object is empty (contains no enumerable properties). + /// The object that will be checked to see if it's empty. + /// + /// + }, + 'isFunction': function() { + /// + /// Determine if the argument passed is a Javascript function object. + /// Object to test whether or not it is a function. + /// + /// + }, + 'isNumeric': function() { + /// + /// Determines whether its argument is a number. + /// The value to be tested. + /// + /// + }, + 'isPlainObject': function() { + /// + /// Check to see if an object is a plain object (created using "{}" or "new Object"). + /// The object that will be checked to see if it's a plain object. + /// + /// + }, + 'isWindow': function() { + /// + /// Determine whether the argument is a window. + /// Object to test whether or not it is a window. + /// + /// + }, + 'isXMLDoc': function() { + /// + /// Check to see if a DOM node is within an XML document (or is an XML document). + /// The DOM node that will be checked to see if it's in an XML document. + /// + /// + }, + 'makeArray': function() { + /// + /// Convert an array-like object into a true JavaScript array. + /// Any object to turn into a native Array. + /// + /// + }, + 'map': function() { + /// + /// Translate all items in an array or object to new array of items. + /// The Array to translate. + /// The function to process each item against. The first argument to the function is the array item, the second argument is the index in array The function can return any value. Within the function, this refers to the global (window) object. + /// + /// + /// + /// Translate all items in an array or object to new array of items. + /// The Array or Object to translate. + /// The function to process each item against. The first argument to the function is the value; the second argument is the index or key of the array or object property. The function can return any value to add to the array. A returned array will be flattened into the resulting array. Within the function, this refers to the global (window) object. + /// + /// + }, + 'merge': function() { + /// + /// Merge the contents of two arrays together into the first array. + /// The first array to merge, the elements of second added. + /// The second array to merge into the first, unaltered. + /// + /// + }, + 'noConflict': function() { + /// + /// Relinquish jQuery's control of the $ variable. + /// A Boolean indicating whether to remove all jQuery variables from the global scope (including jQuery itself). + /// + /// + }, + 'noop': function() { + /// An empty function. + }, + 'now': function() { + /// Return a number representing the current time. + /// + }, + 'param': function() { + /// + /// Create a serialized representation of an array or object, suitable for use in a URL query string or Ajax request. + /// An array or object to serialize. + /// + /// + /// + /// Create a serialized representation of an array or object, suitable for use in a URL query string or Ajax request. + /// An array or object to serialize. + /// A Boolean indicating whether to perform a traditional "shallow" serialization. + /// + /// + }, + 'parseHTML': function() { + /// + /// Parses a string into an array of DOM nodes. + /// HTML string to be parsed + /// Document element to serve as the context in which the HTML fragment will be created + /// A Boolean indicating whether to include scripts passed in the HTML string + /// + /// + }, + 'parseJSON': function() { + /// + /// Takes a well-formed JSON string and returns the resulting JavaScript object. + /// The JSON string to parse. + /// + /// + }, + 'parseXML': function() { + /// + /// Parses a string into an XML document. + /// a well-formed XML string to be parsed + /// + /// + }, + 'post': function() { + /// + /// Load data from the server using a HTTP POST request. + /// A string containing the URL to which the request is sent. + /// A plain object or string that is sent to the server with the request. + /// A callback function that is executed if the request succeeds. Required if dataType is provided, but can be null in that case. + /// The type of data expected from the server. Default: Intelligent Guess (xml, json, script, text, html). + /// + /// + }, + 'proxy': function() { + /// + /// Takes a function and returns a new one that will always have a particular context. + /// The function whose context will be changed. + /// The object to which the context (this) of the function should be set. + /// + /// + /// + /// Takes a function and returns a new one that will always have a particular context. + /// The object to which the context of the function should be set. + /// The name of the function whose context will be changed (should be a property of the context object). + /// + /// + /// + /// Takes a function and returns a new one that will always have a particular context. + /// The function whose context will be changed. + /// The object to which the context (this) of the function should be set. + /// Any number of arguments to be passed to the function referenced in the function argument. + /// + /// + /// + /// Takes a function and returns a new one that will always have a particular context. + /// The object to which the context of the function should be set. + /// The name of the function whose context will be changed (should be a property of the context object). + /// Any number of arguments to be passed to the function named in the name argument. + /// + /// + }, + 'queue': function() { + /// + /// Manipulate the queue of functions to be executed on the matched element. + /// A DOM element where the array of queued functions is attached. + /// A string containing the name of the queue. Defaults to fx, the standard effects queue. + /// An array of functions to replace the current queue contents. + /// + /// + /// + /// Manipulate the queue of functions to be executed on the matched element. + /// A DOM element on which to add a queued function. + /// A string containing the name of the queue. Defaults to fx, the standard effects queue. + /// The new function to add to the queue. + /// + /// + }, + 'removeData': function() { + /// + /// Remove a previously-stored piece of data. + /// A DOM element from which to remove data. + /// A string naming the piece of data to remove. + /// + /// + }, + 'sub': function() { + /// Creates a new copy of jQuery whose properties and methods can be modified without affecting the original jQuery object. + /// + }, + 'support': function() { + /// A collection of properties that represent the presence of different browser features or bugs. Primarily intended for jQuery's internal use; specific properties may be removed when they are no longer needed internally to improve page startup performance. + /// + }, + 'trim': function() { + /// + /// Remove the whitespace from the beginning and end of a string. + /// The string to trim. + /// + /// + }, + 'type': function() { + /// + /// Determine the internal JavaScript [[Class]] of an object. + /// Object to get the internal JavaScript [[Class]] of. + /// + /// + }, + 'unique': function() { + /// + /// Sorts an array of DOM elements, in place, with the duplicates removed. Note that this only works on arrays of DOM elements, not strings or numbers. + /// The Array of DOM elements. + /// + /// + }, + 'when': function() { + /// + /// Provides a way to execute callback functions based on one or more objects, usually Deferred objects that represent asynchronous events. + /// One or more Deferred objects, or plain JavaScript objects. + /// + /// + }, +}); + +var _1228819969 = jQuery.Callbacks; +jQuery.Callbacks = function(flags) { +var _object = _1228819969(flags); +intellisense.annotate(_object, { + 'add': function() { + /// + /// Add a callback or a collection of callbacks to a callback list. + /// A function, or array of functions, that are to be added to the callback list. + /// + /// + }, + 'disable': function() { + /// Disable a callback list from doing anything more. + /// + }, + 'disabled': function() { + /// Determine if the callbacks list has been disabled. + /// + }, + 'empty': function() { + /// Remove all of the callbacks from a list. + /// + }, + 'fire': function() { + /// + /// Call all of the callbacks with the given arguments + /// The argument or list of arguments to pass back to the callback list. + /// + /// + }, + 'fired': function() { + /// Determine if the callbacks have already been called at least once. + /// + }, + 'fireWith': function() { + /// + /// Call all callbacks in a list with the given context and arguments. + /// A reference to the context in which the callbacks in the list should be fired. + /// An argument, or array of arguments, to pass to the callbacks in the list. + /// + /// + }, + 'has': function() { + /// + /// Determine whether a supplied callback is in a list + /// The callback to search for. + /// + /// + }, + 'lock': function() { + /// Lock a callback list in its current state. + /// + }, + 'locked': function() { + /// Determine if the callbacks list has been locked. + /// + }, + 'remove': function() { + /// + /// Remove a callback or a collection of callbacks from a callback list. + /// A function, or array of functions, that are to be removed from the callback list. + /// + /// + }, +}); + +return _object; +}; +intellisense.redirectDefinition(jQuery.Callbacks, _1228819969); + +var _731531622 = jQuery.Deferred; +jQuery.Deferred = function(func) { +var _object = _731531622(func); +intellisense.annotate(_object, { + 'always': function() { + /// + /// Add handlers to be called when the Deferred object is either resolved or rejected. + /// A function, or array of functions, that is called when the Deferred is resolved or rejected. + /// Optional additional functions, or arrays of functions, that are called when the Deferred is resolved or rejected. + /// + /// + }, + 'done': function() { + /// + /// Add handlers to be called when the Deferred object is resolved. + /// A function, or array of functions, that are called when the Deferred is resolved. + /// Optional additional functions, or arrays of functions, that are called when the Deferred is resolved. + /// + /// + }, + 'fail': function() { + /// + /// Add handlers to be called when the Deferred object is rejected. + /// A function, or array of functions, that are called when the Deferred is rejected. + /// Optional additional functions, or arrays of functions, that are called when the Deferred is rejected. + /// + /// + }, + 'isRejected': function() { + /// Determine whether a Deferred object has been rejected. + /// + }, + 'isResolved': function() { + /// Determine whether a Deferred object has been resolved. + /// + }, + 'notify': function() { + /// + /// Call the progressCallbacks on a Deferred object with the given args. + /// Optional arguments that are passed to the progressCallbacks. + /// + /// + }, + 'notifyWith': function() { + /// + /// Call the progressCallbacks on a Deferred object with the given context and args. + /// Context passed to the progressCallbacks as the this object. + /// Optional arguments that are passed to the progressCallbacks. + /// + /// + }, + 'pipe': function() { + /// + /// Utility method to filter and/or chain Deferreds. + /// An optional function that is called when the Deferred is resolved. + /// An optional function that is called when the Deferred is rejected. + /// + /// + /// + /// Utility method to filter and/or chain Deferreds. + /// An optional function that is called when the Deferred is resolved. + /// An optional function that is called when the Deferred is rejected. + /// An optional function that is called when progress notifications are sent to the Deferred. + /// + /// + }, + 'progress': function() { + /// + /// Add handlers to be called when the Deferred object generates progress notifications. + /// A function, or array of functions, to be called when the Deferred generates progress notifications. + /// + /// + }, + 'promise': function() { + /// + /// Return a Deferred's Promise object. + /// Object onto which the promise methods have to be attached + /// + /// + }, + 'reject': function() { + /// + /// Reject a Deferred object and call any failCallbacks with the given args. + /// Optional arguments that are passed to the failCallbacks. + /// + /// + }, + 'rejectWith': function() { + /// + /// Reject a Deferred object and call any failCallbacks with the given context and args. + /// Context passed to the failCallbacks as the this object. + /// An optional array of arguments that are passed to the failCallbacks. + /// + /// + }, + 'resolve': function() { + /// + /// Resolve a Deferred object and call any doneCallbacks with the given args. + /// Optional arguments that are passed to the doneCallbacks. + /// + /// + }, + 'resolveWith': function() { + /// + /// Resolve a Deferred object and call any doneCallbacks with the given context and args. + /// Context passed to the doneCallbacks as the this object. + /// An optional array of arguments that are passed to the doneCallbacks. + /// + /// + }, + 'state': function() { + /// Determine the current state of a Deferred object. + /// + }, + 'then': function() { + /// + /// Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. + /// A function that is called when the Deferred is resolved. + /// An optional function that is called when the Deferred is rejected. + /// An optional function that is called when progress notifications are sent to the Deferred. + /// + /// + /// + /// Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. + /// A function, or array of functions, called when the Deferred is resolved. + /// A function, or array of functions, called when the Deferred is rejected. + /// + /// + /// + /// Add handlers to be called when the Deferred object is resolved, rejected, or still in progress. + /// A function, or array of functions, called when the Deferred is resolved. + /// A function, or array of functions, called when the Deferred is rejected. + /// A function, or array of functions, called when the Deferred notifies progress. + /// + /// + }, +}); + +return _object; +}; +intellisense.redirectDefinition(jQuery.Callbacks, _731531622); + +intellisense.annotate(jQuery.Event.prototype, { + 'currentTarget': function() { + /// The current DOM element within the event bubbling phase. + /// + }, + 'data': function() { + /// An optional object of data passed to an event method when the current executing handler is bound. + /// + }, + 'delegateTarget': function() { + /// The element where the currently-called jQuery event handler was attached. + /// + }, + 'isDefaultPrevented': function() { + /// Returns whether event.preventDefault() was ever called on this event object. + /// + }, + 'isImmediatePropagationStopped': function() { + /// Returns whether event.stopImmediatePropagation() was ever called on this event object. + /// + }, + 'isPropagationStopped': function() { + /// Returns whether event.stopPropagation() was ever called on this event object. + /// + }, + 'metaKey': function() { + /// Indicates whether the META key was pressed when the event fired. + /// + }, + 'namespace': function() { + /// The namespace specified when the event was triggered. + /// + }, + 'pageX': function() { + /// The mouse position relative to the left edge of the document. + /// + }, + 'pageY': function() { + /// The mouse position relative to the top edge of the document. + /// + }, + 'preventDefault': function() { + /// If this method is called, the default action of the event will not be triggered. + }, + 'relatedTarget': function() { + /// The other DOM element involved in the event, if any. + /// + }, + 'result': function() { + /// The last value returned by an event handler that was triggered by this event, unless the value was undefined. + /// + }, + 'stopImmediatePropagation': function() { + /// Keeps the rest of the handlers from being executed and prevents the event from bubbling up the DOM tree. + }, + 'stopPropagation': function() { + /// Prevents the event from bubbling up the DOM tree, preventing any parent handlers from being notified of the event. + }, + 'target': function() { + /// The DOM element that initiated the event. + /// + }, + 'timeStamp': function() { + /// The difference in milliseconds between the time the browser created the event and January 1, 1970. + /// + }, + 'type': function() { + /// Describes the nature of the event. + /// + }, + 'which': function() { + /// For key or mouse events, this property indicates the specific key or button that was pressed. + /// + }, +}); + +intellisense.annotate(jQuery.fn, { + 'add': function() { + /// + /// Add elements to the set of matched elements. + /// A string representing a selector expression to find additional elements to add to the set of matched elements. + /// + /// + /// + /// Add elements to the set of matched elements. + /// One or more elements to add to the set of matched elements. + /// + /// + /// + /// Add elements to the set of matched elements. + /// An HTML fragment to add to the set of matched elements. + /// + /// + /// + /// Add elements to the set of matched elements. + /// An existing jQuery object to add to the set of matched elements. + /// + /// + /// + /// Add elements to the set of matched elements. + /// A string representing a selector expression to find additional elements to add to the set of matched elements. + /// The point in the document at which the selector should begin matching; similar to the context argument of the $(selector, context) method. + /// + /// + }, + 'addBack': function() { + /// + /// Add the previous set of elements on the stack to the current set, optionally filtered by a selector. + /// A string containing a selector expression to match the current set of elements against. + /// + /// + }, + 'addClass': function() { + /// + /// Adds the specified class(es) to each of the set of matched elements. + /// One or more space-separated classes to be added to the class attribute of each matched element. + /// + /// + /// + /// Adds the specified class(es) to each of the set of matched elements. + /// A function returning one or more space-separated class names to be added to the existing class name(s). Receives the index position of the element in the set and the existing class name(s) as arguments. Within the function, this refers to the current element in the set. + /// + /// + }, + 'after': function() { + /// + /// Insert content, specified by the parameter, after each element in the set of matched elements. + /// HTML string, DOM element, or jQuery object to insert after each element in the set of matched elements. + /// One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert after each element in the set of matched elements. + /// + /// + /// + /// Insert content, specified by the parameter, after each element in the set of matched elements. + /// A function that returns an HTML string, DOM element(s), or jQuery object to insert after each element in the set of matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set. + /// + /// + }, + 'ajaxComplete': function() { + /// + /// Register a handler to be called when Ajax requests complete. This is an AjaxEvent. + /// The function to be invoked. + /// + /// + }, + 'ajaxError': function() { + /// + /// Register a handler to be called when Ajax requests complete with an error. This is an Ajax Event. + /// The function to be invoked. + /// + /// + }, + 'ajaxSend': function() { + /// + /// Attach a function to be executed before an Ajax request is sent. This is an Ajax Event. + /// The function to be invoked. + /// + /// + }, + 'ajaxStart': function() { + /// + /// Register a handler to be called when the first Ajax request begins. This is an Ajax Event. + /// The function to be invoked. + /// + /// + }, + 'ajaxStop': function() { + /// + /// Register a handler to be called when all Ajax requests have completed. This is an Ajax Event. + /// The function to be invoked. + /// + /// + }, + 'ajaxSuccess': function() { + /// + /// Attach a function to be executed whenever an Ajax request completes successfully. This is an Ajax Event. + /// The function to be invoked. + /// + /// + }, + 'all': function() { + /// Selects all elements. + }, + 'andSelf': function() { + /// Add the previous set of elements on the stack to the current set. + /// + }, + 'animate': function() { + /// + /// Perform a custom animation of a set of CSS properties. + /// An object of CSS properties and values that the animation will move toward. + /// A string or number determining how long the animation will run. + /// A string indicating which easing function to use for the transition. + /// A function to call once the animation is complete. + /// + /// + /// + /// Perform a custom animation of a set of CSS properties. + /// An object of CSS properties and values that the animation will move toward. + /// A map of additional options to pass to the method. + /// + /// + }, + 'animated': function() { + /// Select all elements that are in the progress of an animation at the time the selector is run. + }, + 'append': function() { + /// + /// Insert content, specified by the parameter, to the end of each element in the set of matched elements. + /// DOM element, HTML string, or jQuery object to insert at the end of each element in the set of matched elements. + /// One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert at the end of each element in the set of matched elements. + /// + /// + /// + /// Insert content, specified by the parameter, to the end of each element in the set of matched elements. + /// A function that returns an HTML string, DOM element(s), or jQuery object to insert at the end of each element in the set of matched elements. Receives the index position of the element in the set and the old HTML value of the element as arguments. Within the function, this refers to the current element in the set. + /// + /// + }, + 'appendTo': function() { + /// + /// Insert every element in the set of matched elements to the end of the target. + /// A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted at the end of the element(s) specified by this parameter. + /// + /// + }, + 'attr': function() { + /// + /// Set one or more attributes for the set of matched elements. + /// The name of the attribute to set. + /// A value to set for the attribute. + /// + /// + /// + /// Set one or more attributes for the set of matched elements. + /// An object of attribute-value pairs to set. + /// + /// + /// + /// Set one or more attributes for the set of matched elements. + /// The name of the attribute to set. + /// A function returning the value to set. this is the current element. Receives the index position of the element in the set and the old attribute value as arguments. + /// + /// + }, + 'attributeContains': function() { + /// + /// Selects elements that have the specified attribute with a value containing the a given substring. + /// An attribute name. + /// An attribute value. Can be either an unquoted single word or a quoted string. + /// + }, + 'attributeContainsPrefix': function() { + /// + /// Selects elements that have the specified attribute with a value either equal to a given string or starting with that string followed by a hyphen (-). + /// An attribute name. + /// An attribute value. Can be either an unquoted single word or a quoted string. + /// + }, + 'attributeContainsWord': function() { + /// + /// Selects elements that have the specified attribute with a value containing a given word, delimited by spaces. + /// An attribute name. + /// An attribute value. Can be either an unquoted single word or a quoted string. + /// + }, + 'attributeEndsWith': function() { + /// + /// Selects elements that have the specified attribute with a value ending exactly with a given string. The comparison is case sensitive. + /// An attribute name. + /// An attribute value. Can be either an unquoted single word or a quoted string. + /// + }, + 'attributeEquals': function() { + /// + /// Selects elements that have the specified attribute with a value exactly equal to a certain value. + /// An attribute name. + /// An attribute value. Can be either an unquoted single word or a quoted string. + /// + }, + 'attributeHas': function() { + /// + /// Selects elements that have the specified attribute, with any value. + /// An attribute name. + /// + }, + 'attributeMultiple': function() { + /// + /// Matches elements that match all of the specified attribute filters. + /// An attribute filter. + /// Another attribute filter, reducing the selection even more + /// As many more attribute filters as necessary + /// + }, + 'attributeNotEqual': function() { + /// + /// Select elements that either don't have the specified attribute, or do have the specified attribute but not with a certain value. + /// An attribute name. + /// An attribute value. Can be either an unquoted single word or a quoted string. + /// + }, + 'attributeStartsWith': function() { + /// + /// Selects elements that have the specified attribute with a value beginning exactly with a given string. + /// An attribute name. + /// An attribute value. Can be either an unquoted single word or a quoted string. + /// + }, + 'before': function() { + /// + /// Insert content, specified by the parameter, before each element in the set of matched elements. + /// HTML string, DOM element, or jQuery object to insert before each element in the set of matched elements. + /// One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert before each element in the set of matched elements. + /// + /// + /// + /// Insert content, specified by the parameter, before each element in the set of matched elements. + /// A function that returns an HTML string, DOM element(s), or jQuery object to insert before each element in the set of matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set. + /// + /// + }, + 'bind': function() { + /// + /// Attach a handler to an event for the elements. + /// A string containing one or more DOM event types, such as "click" or "submit," or custom event names. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Attach a handler to an event for the elements. + /// A string containing one or more DOM event types, such as "click" or "submit," or custom event names. + /// An object containing data that will be passed to the event handler. + /// Setting the third argument to false will attach a function that prevents the default action from occurring and stops the event from bubbling. The default is true. + /// + /// + /// + /// Attach a handler to an event for the elements. + /// An object containing one or more DOM event types and functions to execute for them. + /// + /// + }, + 'blur': function() { + /// + /// Bind an event handler to the "blur" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "blur" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'button': function() { + /// Selects all button elements and elements of type button. + }, + 'change': function() { + /// + /// Bind an event handler to the "change" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "change" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'checkbox': function() { + /// Selects all elements of type checkbox. + }, + 'checked': function() { + /// Matches all elements that are checked or selected. + }, + 'child': function() { + /// + /// Selects all direct child elements specified by "child" of elements specified by "parent". + /// Any valid selector. + /// A selector to filter the child elements. + /// + }, + 'children': function() { + /// + /// Get the children of each element in the set of matched elements, optionally filtered by a selector. + /// A string containing a selector expression to match elements against. + /// + /// + }, + 'class': function() { + /// + /// Selects all elements with the given class. + /// A class to search for. An element can have multiple classes; only one of them must match. + /// + }, + 'clearQueue': function() { + /// + /// Remove from the queue all items that have not yet been run. + /// A string containing the name of the queue. Defaults to fx, the standard effects queue. + /// + /// + }, + 'click': function() { + /// + /// Bind an event handler to the "click" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "click" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'clone': function() { + /// + /// Create a deep copy of the set of matched elements. + /// A Boolean indicating whether event handlers should be copied along with the elements. As of jQuery 1.4, element data will be copied as well. + /// + /// + /// + /// Create a deep copy of the set of matched elements. + /// A Boolean indicating whether event handlers and data should be copied along with the elements. The default value is false. *In jQuery 1.5.0 the default value was incorrectly true; it was changed back to false in 1.5.1 and up. + /// A Boolean indicating whether event handlers and data for all children of the cloned element should be copied. By default its value matches the first argument's value (which defaults to false). + /// + /// + }, + 'closest': function() { + /// + /// For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree. + /// A string containing a selector expression to match elements against. + /// + /// + /// + /// For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree. + /// A string containing a selector expression to match elements against. + /// A DOM element within which a matching element may be found. If no context is passed in then the context of the jQuery set will be used instead. + /// + /// + /// + /// For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree. + /// A jQuery object to match elements against. + /// + /// + /// + /// For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree. + /// An element to match elements against. + /// + /// + }, + 'contains': function() { + /// + /// Select all elements that contain the specified text. + /// A string of text to look for. It's case sensitive. + /// + }, + 'contents': function() { + /// Get the children of each element in the set of matched elements, including text and comment nodes. + /// + }, + 'context': function() { + /// The DOM node context originally passed to jQuery(); if none was passed then context will likely be the document. + /// + }, + 'css': function() { + /// + /// Set one or more CSS properties for the set of matched elements. + /// A CSS property name. + /// A value to set for the property. + /// + /// + /// + /// Set one or more CSS properties for the set of matched elements. + /// A CSS property name. + /// A function returning the value to set. this is the current element. Receives the index position of the element in the set and the old value as arguments. + /// + /// + /// + /// Set one or more CSS properties for the set of matched elements. + /// An object of property-value pairs to set. + /// + /// + }, + 'data': function() { + /// + /// Store arbitrary data associated with the matched elements. + /// A string naming the piece of data to set. + /// The new data value; it can be any Javascript type including Array or Object. + /// + /// + /// + /// Store arbitrary data associated with the matched elements. + /// An object of key-value pairs of data to update. + /// + /// + }, + 'dblclick': function() { + /// + /// Bind an event handler to the "dblclick" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "dblclick" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'delay': function() { + /// + /// Set a timer to delay execution of subsequent items in the queue. + /// An integer indicating the number of milliseconds to delay execution of the next item in the queue. + /// A string containing the name of the queue. Defaults to fx, the standard effects queue. + /// + /// + }, + 'delegate': function() { + /// + /// Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements. + /// A selector to filter the elements that trigger the event. + /// A string containing one or more space-separated JavaScript event types, such as "click" or "keydown," or custom event names. + /// A function to execute at the time the event is triggered. + /// + /// + /// + /// Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements. + /// A selector to filter the elements that trigger the event. + /// A string containing one or more space-separated JavaScript event types, such as "click" or "keydown," or custom event names. + /// An object containing data that will be passed to the event handler. + /// A function to execute at the time the event is triggered. + /// + /// + /// + /// Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements. + /// A selector to filter the elements that trigger the event. + /// A plain object of one or more event types and functions to execute for them. + /// + /// + }, + 'dequeue': function() { + /// + /// Execute the next function on the queue for the matched elements. + /// A string containing the name of the queue. Defaults to fx, the standard effects queue. + /// + /// + }, + 'descendant': function() { + /// + /// Selects all elements that are descendants of a given ancestor. + /// Any valid selector. + /// A selector to filter the descendant elements. + /// + }, + 'detach': function() { + /// + /// Remove the set of matched elements from the DOM. + /// A selector expression that filters the set of matched elements to be removed. + /// + /// + }, + 'die': function() { + /// + /// Remove event handlers previously attached using .live() from the elements. + /// A string containing a JavaScript event type, such as click or keydown. + /// The function that is no longer to be executed. + /// + /// + /// + /// Remove event handlers previously attached using .live() from the elements. + /// A plain object of one or more event types, such as click or keydown and their corresponding functions that are no longer to be executed. + /// + /// + }, + 'disabled': function() { + /// Selects all elements that are disabled. + }, + 'each': function() { + /// + /// Iterate over a jQuery object, executing a function for each matched element. + /// A function to execute for each matched element. + /// + /// + }, + 'element': function() { + /// + /// Selects all elements with the given tag name. + /// An element to search for. Refers to the tagName of DOM nodes. + /// + }, + 'empty': function() { + /// Select all elements that have no children (including text nodes). + }, + 'enabled': function() { + /// Selects all elements that are enabled. + }, + 'end': function() { + /// End the most recent filtering operation in the current chain and return the set of matched elements to its previous state. + /// + }, + 'eq': function() { + /// + /// Select the element at index n within the matched set. + /// Zero-based index of the element to match. + /// + /// + /// Select the element at index n within the matched set. + /// Zero-based index of the element to match, counting backwards from the last element. + /// + }, + 'error': function() { + /// + /// Bind an event handler to the "error" JavaScript event. + /// A function to execute when the event is triggered. + /// + /// + /// + /// Bind an event handler to the "error" JavaScript event. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'even': function() { + /// Selects even elements, zero-indexed. See also odd. + }, + 'fadeIn': function() { + /// + /// Display the matched elements by fading them to opaque. + /// A string or number determining how long the animation will run. + /// A function to call once the animation is complete. + /// + /// + /// + /// Display the matched elements by fading them to opaque. + /// A map of additional options to pass to the method. + /// + /// + /// + /// Display the matched elements by fading them to opaque. + /// A string or number determining how long the animation will run. + /// A string indicating which easing function to use for the transition. + /// A function to call once the animation is complete. + /// + /// + }, + 'fadeOut': function() { + /// + /// Hide the matched elements by fading them to transparent. + /// A string or number determining how long the animation will run. + /// A function to call once the animation is complete. + /// + /// + /// + /// Hide the matched elements by fading them to transparent. + /// A map of additional options to pass to the method. + /// + /// + /// + /// Hide the matched elements by fading them to transparent. + /// A string or number determining how long the animation will run. + /// A string indicating which easing function to use for the transition. + /// A function to call once the animation is complete. + /// + /// + }, + 'fadeTo': function() { + /// + /// Adjust the opacity of the matched elements. + /// A string or number determining how long the animation will run. + /// A number between 0 and 1 denoting the target opacity. + /// A function to call once the animation is complete. + /// + /// + /// + /// Adjust the opacity of the matched elements. + /// A string or number determining how long the animation will run. + /// A number between 0 and 1 denoting the target opacity. + /// A string indicating which easing function to use for the transition. + /// A function to call once the animation is complete. + /// + /// + }, + 'fadeToggle': function() { + /// + /// Display or hide the matched elements by animating their opacity. + /// A string or number determining how long the animation will run. + /// A string indicating which easing function to use for the transition. + /// A function to call once the animation is complete. + /// + /// + /// + /// Display or hide the matched elements by animating their opacity. + /// A map of additional options to pass to the method. + /// + /// + }, + 'file': function() { + /// Selects all elements of type file. + }, + 'filter': function() { + /// + /// Reduce the set of matched elements to those that match the selector or pass the function's test. + /// A string containing a selector expression to match the current set of elements against. + /// + /// + /// + /// Reduce the set of matched elements to those that match the selector or pass the function's test. + /// A function used as a test for each element in the set. this is the current DOM element. + /// + /// + /// + /// Reduce the set of matched elements to those that match the selector or pass the function's test. + /// An element to match the current set of elements against. + /// + /// + /// + /// Reduce the set of matched elements to those that match the selector or pass the function's test. + /// An existing jQuery object to match the current set of elements against. + /// + /// + }, + 'find': function() { + /// + /// Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element. + /// A string containing a selector expression to match elements against. + /// + /// + /// + /// Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element. + /// A jQuery object to match elements against. + /// + /// + /// + /// Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element. + /// An element to match elements against. + /// + /// + }, + 'finish': function() { + /// + /// Stop the currently-running animation, remove all queued animations, and complete all animations for the matched elements. + /// The name of the queue in which to stop animations. + /// + /// + }, + 'first': function() { + /// Selects the first matched element. + }, + 'first-child': function() { + /// Selects all elements that are the first child of their parent. + }, + 'first-of-type': function() { + /// Selects all elements that are the first among siblings of the same element name. + }, + 'focus': function() { + /// + /// Bind an event handler to the "focus" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "focus" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'focusin': function() { + /// + /// Bind an event handler to the "focusin" event. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "focusin" event. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'focusout': function() { + /// + /// Bind an event handler to the "focusout" JavaScript event. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "focusout" JavaScript event. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'get': function() { + /// + /// Retrieve one of the DOM elements matched by the jQuery object. + /// A zero-based integer indicating which element to retrieve. + /// + /// + }, + 'gt': function() { + /// + /// Select all elements at an index greater than index within the matched set. + /// Zero-based index. + /// + /// + /// Select all elements at an index greater than index within the matched set. + /// Zero-based index, counting backwards from the last element. + /// + }, + 'has': function() { + /// + /// Reduce the set of matched elements to those that have a descendant that matches the selector or DOM element. + /// A string containing a selector expression to match elements against. + /// + /// + /// + /// Reduce the set of matched elements to those that have a descendant that matches the selector or DOM element. + /// A DOM element to match elements against. + /// + /// + }, + 'hasClass': function() { + /// + /// Determine whether any of the matched elements are assigned the given class. + /// The class name to search for. + /// + /// + }, + 'header': function() { + /// Selects all elements that are headers, like h1, h2, h3 and so on. + }, + 'height': function() { + /// + /// Set the CSS height of every matched element. + /// An integer representing the number of pixels, or an integer with an optional unit of measure appended (as a string). + /// + /// + /// + /// Set the CSS height of every matched element. + /// A function returning the height to set. Receives the index position of the element in the set and the old height as arguments. Within the function, this refers to the current element in the set. + /// + /// + }, + 'hidden': function() { + /// Selects all elements that are hidden. + }, + 'hide': function() { + /// + /// Hide the matched elements. + /// A string or number determining how long the animation will run. + /// A function to call once the animation is complete. + /// + /// + /// + /// Hide the matched elements. + /// A map of additional options to pass to the method. + /// + /// + /// + /// Hide the matched elements. + /// A string or number determining how long the animation will run. + /// A string indicating which easing function to use for the transition. + /// A function to call once the animation is complete. + /// + /// + }, + 'hover': function() { + /// + /// Bind two handlers to the matched elements, to be executed when the mouse pointer enters and leaves the elements. + /// A function to execute when the mouse pointer enters the element. + /// A function to execute when the mouse pointer leaves the element. + /// + /// + }, + 'html': function() { + /// + /// Set the HTML contents of each element in the set of matched elements. + /// A string of HTML to set as the content of each matched element. + /// + /// + /// + /// Set the HTML contents of each element in the set of matched elements. + /// A function returning the HTML content to set. Receives the index position of the element in the set and the old HTML value as arguments. jQuery empties the element before calling the function; use the oldhtml argument to reference the previous content. Within the function, this refers to the current element in the set. + /// + /// + }, + 'id': function() { + /// + /// Selects a single element with the given id attribute. + /// An ID to search for, specified via the id attribute of an element. + /// + }, + 'image': function() { + /// Selects all elements of type image. + }, + 'index': function() { + /// + /// Search for a given element from among the matched elements. + /// A selector representing a jQuery collection in which to look for an element. + /// + /// + /// + /// Search for a given element from among the matched elements. + /// The DOM element or first element within the jQuery object to look for. + /// + /// + }, + 'init': function() { + /// + /// Accepts a string containing a CSS selector which is then used to match a set of elements. + /// A string containing a selector expression + /// A DOM Element, Document, or jQuery to use as context + /// + /// + /// + /// Accepts a string containing a CSS selector which is then used to match a set of elements. + /// A DOM element to wrap in a jQuery object. + /// + /// + /// + /// Accepts a string containing a CSS selector which is then used to match a set of elements. + /// An array containing a set of DOM elements to wrap in a jQuery object. + /// + /// + /// + /// Accepts a string containing a CSS selector which is then used to match a set of elements. + /// A plain object to wrap in a jQuery object. + /// + /// + /// + /// Accepts a string containing a CSS selector which is then used to match a set of elements. + /// An existing jQuery object to clone. + /// + /// + }, + 'innerHeight': function() { + /// Get the current computed height for the first element in the set of matched elements, including padding but not border. + /// + }, + 'innerWidth': function() { + /// Get the current computed width for the first element in the set of matched elements, including padding but not border. + /// + }, + 'input': function() { + /// Selects all input, textarea, select and button elements. + }, + 'insertAfter': function() { + /// + /// Insert every element in the set of matched elements after the target. + /// A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted after the element(s) specified by this parameter. + /// + /// + }, + 'insertBefore': function() { + /// + /// Insert every element in the set of matched elements before the target. + /// A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted before the element(s) specified by this parameter. + /// + /// + }, + 'is': function() { + /// + /// Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments. + /// A string containing a selector expression to match elements against. + /// + /// + /// + /// Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments. + /// A function used as a test for the set of elements. It accepts one argument, index, which is the element's index in the jQuery collection.Within the function, this refers to the current DOM element. + /// + /// + /// + /// Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments. + /// An existing jQuery object to match the current set of elements against. + /// + /// + /// + /// Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments. + /// An element to match the current set of elements against. + /// + /// + }, + 'jquery': function() { + /// A string containing the jQuery version number. + /// + }, + 'keydown': function() { + /// + /// Bind an event handler to the "keydown" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "keydown" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'keypress': function() { + /// + /// Bind an event handler to the "keypress" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "keypress" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'keyup': function() { + /// + /// Bind an event handler to the "keyup" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "keyup" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'lang': function() { + /// + /// Selects all elements of the specified language. + /// A language code. + /// + }, + 'last': function() { + /// Selects the last matched element. + }, + 'last-child': function() { + /// Selects all elements that are the last child of their parent. + }, + 'last-of-type': function() { + /// Selects all elements that are the last among siblings of the same element name. + }, + 'length': function() { + /// The number of elements in the jQuery object. + /// + }, + 'live': function() { + /// + /// Attach an event handler for all elements which match the current selector, now and in the future. + /// A string containing a JavaScript event type, such as "click" or "keydown." As of jQuery 1.4 the string can contain multiple, space-separated event types or custom event names. + /// A function to execute at the time the event is triggered. + /// + /// + /// + /// Attach an event handler for all elements which match the current selector, now and in the future. + /// A string containing a JavaScript event type, such as "click" or "keydown." As of jQuery 1.4 the string can contain multiple, space-separated event types or custom event names. + /// An object containing data that will be passed to the event handler. + /// A function to execute at the time the event is triggered. + /// + /// + /// + /// Attach an event handler for all elements which match the current selector, now and in the future. + /// A plain object of one or more JavaScript event types and functions to execute for them. + /// + /// + }, + 'load': function() { + /// + /// Bind an event handler to the "load" JavaScript event. + /// A function to execute when the event is triggered. + /// + /// + /// + /// Bind an event handler to the "load" JavaScript event. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'lt': function() { + /// + /// Select all elements at an index less than index within the matched set. + /// Zero-based index. + /// + /// + /// Select all elements at an index less than index within the matched set. + /// Zero-based index, counting backwards from the last element. + /// + }, + 'map': function() { + /// + /// Pass each element in the current matched set through a function, producing a new jQuery object containing the return values. + /// A function object that will be invoked for each element in the current set. + /// + /// + }, + 'mousedown': function() { + /// + /// Bind an event handler to the "mousedown" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "mousedown" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'mouseenter': function() { + /// + /// Bind an event handler to be fired when the mouse enters an element, or trigger that handler on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to be fired when the mouse enters an element, or trigger that handler on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'mouseleave': function() { + /// + /// Bind an event handler to be fired when the mouse leaves an element, or trigger that handler on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to be fired when the mouse leaves an element, or trigger that handler on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'mousemove': function() { + /// + /// Bind an event handler to the "mousemove" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "mousemove" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'mouseout': function() { + /// + /// Bind an event handler to the "mouseout" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "mouseout" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'mouseover': function() { + /// + /// Bind an event handler to the "mouseover" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "mouseover" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'mouseup': function() { + /// + /// Bind an event handler to the "mouseup" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "mouseup" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'multiple': function() { + /// + /// Selects the combined results of all the specified selectors. + /// Any valid selector. + /// Another valid selector. + /// As many more valid selectors as you like. + /// + }, + 'next': function() { + /// + /// Get the immediately following sibling of each element in the set of matched elements. If a selector is provided, it retrieves the next sibling only if it matches that selector. + /// A string containing a selector expression to match elements against. + /// + /// + }, + 'next adjacent': function() { + /// + /// Selects all next elements matching "next" that are immediately preceded by a sibling "prev". + /// Any valid selector. + /// A selector to match the element that is next to the first selector. + /// + }, + 'next siblings': function() { + /// + /// Selects all sibling elements that follow after the "prev" element, have the same parent, and match the filtering "siblings" selector. + /// Any valid selector. + /// A selector to filter elements that are the following siblings of the first selector. + /// + }, + 'nextAll': function() { + /// + /// Get all following siblings of each element in the set of matched elements, optionally filtered by a selector. + /// A string containing a selector expression to match elements against. + /// + /// + }, + 'nextUntil': function() { + /// + /// Get all following siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object passed. + /// A string containing a selector expression to indicate where to stop matching following sibling elements. + /// A string containing a selector expression to match elements against. + /// + /// + /// + /// Get all following siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object passed. + /// A DOM node or jQuery object indicating where to stop matching following sibling elements. + /// A string containing a selector expression to match elements against. + /// + /// + }, + 'not': function() { + /// + /// Remove elements from the set of matched elements. + /// A string containing a selector expression to match elements against. + /// + /// + /// + /// Remove elements from the set of matched elements. + /// One or more DOM elements to remove from the matched set. + /// + /// + /// + /// Remove elements from the set of matched elements. + /// A function used as a test for each element in the set. this is the current DOM element. + /// + /// + /// + /// Remove elements from the set of matched elements. + /// An existing jQuery object to match the current set of elements against. + /// + /// + }, + 'nth-child': function() { + /// + /// Selects all elements that are the nth-child of their parent. + /// The index of each child to match, starting with 1, the string even or odd, or an equation ( eg. :nth-child(even), :nth-child(4n) ) + /// + }, + 'nth-last-child': function() { + /// + /// Selects all elements that are the nth-child of their parent, counting from the last element to the first. + /// The index of each child to match, starting with the last one (1), the string even or odd, or an equation ( eg. :nth-last-child(even), :nth-last-child(4n) ) + /// + }, + 'nth-last-of-type': function() { + /// + /// Selects all elements that are the nth-child of their parent, counting from the last element to the first. + /// The index of each child to match, starting with the last one (1), the string even or odd, or an equation ( eg. :nth-last-of-type(even), :nth-last-of-type(4n) ) + /// + }, + 'nth-of-type': function() { + /// + /// Selects all elements that are the nth child of their parent in relation to siblings with the same element name. + /// The index of each child to match, starting with 1, the string even or odd, or an equation ( eg. :nth-of-type(even), :nth-of-type(4n) ) + /// + }, + 'odd': function() { + /// Selects odd elements, zero-indexed. See also even. + }, + 'off': function() { + /// + /// Remove an event handler. + /// One or more space-separated event types and optional namespaces, or just namespaces, such as "click", "keydown.myPlugin", or ".myPlugin". + /// A selector which should match the one originally passed to .on() when attaching event handlers. + /// A handler function previously attached for the event(s), or the special value false. + /// + /// + /// + /// Remove an event handler. + /// An object where the string keys represent one or more space-separated event types and optional namespaces, and the values represent handler functions previously attached for the event(s). + /// A selector which should match the one originally passed to .on() when attaching event handlers. + /// + /// + }, + 'offset': function() { + /// + /// Set the current coordinates of every element in the set of matched elements, relative to the document. + /// An object containing the properties top and left, which are integers indicating the new top and left coordinates for the elements. + /// + /// + /// + /// Set the current coordinates of every element in the set of matched elements, relative to the document. + /// A function to return the coordinates to set. Receives the index of the element in the collection as the first argument and the current coordinates as the second argument. The function should return an object with the new top and left properties. + /// + /// + }, + 'offsetParent': function() { + /// Get the closest ancestor element that is positioned. + /// + }, + 'on': function() { + /// + /// Attach an event handler function for one or more events to the selected elements. + /// One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin". + /// A selector string to filter the descendants of the selected elements that trigger the event. If the selector is null or omitted, the event is always triggered when it reaches the selected element. + /// Data to be passed to the handler in event.data when an event is triggered. + /// A function to execute when the event is triggered. The value false is also allowed as a shorthand for a function that simply does return false. + /// + /// + /// + /// Attach an event handler function for one or more events to the selected elements. + /// An object in which the string keys represent one or more space-separated event types and optional namespaces, and the values represent a handler function to be called for the event(s). + /// A selector string to filter the descendants of the selected elements that will call the handler. If the selector is null or omitted, the handler is always called when it reaches the selected element. + /// Data to be passed to the handler in event.data when an event occurs. + /// + /// + }, + 'one': function() { + /// + /// Attach a handler to an event for the elements. The handler is executed at most once per element. + /// A string containing one or more JavaScript event types, such as "click" or "submit," or custom event names. + /// An object containing data that will be passed to the event handler. + /// A function to execute at the time the event is triggered. + /// + /// + /// + /// Attach a handler to an event for the elements. The handler is executed at most once per element. + /// One or more space-separated event types and optional namespaces, such as "click" or "keydown.myPlugin". + /// A selector string to filter the descendants of the selected elements that trigger the event. If the selector is null or omitted, the event is always triggered when it reaches the selected element. + /// Data to be passed to the handler in event.data when an event is triggered. + /// A function to execute when the event is triggered. The value false is also allowed as a shorthand for a function that simply does return false. + /// + /// + /// + /// Attach a handler to an event for the elements. The handler is executed at most once per element. + /// An object in which the string keys represent one or more space-separated event types and optional namespaces, and the values represent a handler function to be called for the event(s). + /// A selector string to filter the descendants of the selected elements that will call the handler. If the selector is null or omitted, the handler is always called when it reaches the selected element. + /// Data to be passed to the handler in event.data when an event occurs. + /// + /// + }, + 'only-child': function() { + /// Selects all elements that are the only child of their parent. + }, + 'only-of-type': function() { + /// Selects all elements that have no siblings with the same element name. + }, + 'outerHeight': function() { + /// + /// Get the current computed height for the first element in the set of matched elements, including padding, border, and optionally margin. Returns an integer (without "px") representation of the value or null if called on an empty set of elements. + /// A Boolean indicating whether to include the element's margin in the calculation. + /// + /// + }, + 'outerWidth': function() { + /// + /// Get the current computed width for the first element in the set of matched elements, including padding and border. + /// A Boolean indicating whether to include the element's margin in the calculation. + /// + /// + }, + 'parent': function() { + /// + /// Get the parent of each element in the current set of matched elements, optionally filtered by a selector. + /// A string containing a selector expression to match elements against. + /// + /// + }, + 'parents': function() { + /// + /// Get the ancestors of each element in the current set of matched elements, optionally filtered by a selector. + /// A string containing a selector expression to match elements against. + /// + /// + }, + 'parentsUntil': function() { + /// + /// Get the ancestors of each element in the current set of matched elements, up to but not including the element matched by the selector, DOM node, or jQuery object. + /// A string containing a selector expression to indicate where to stop matching ancestor elements. + /// A string containing a selector expression to match elements against. + /// + /// + /// + /// Get the ancestors of each element in the current set of matched elements, up to but not including the element matched by the selector, DOM node, or jQuery object. + /// A DOM node or jQuery object indicating where to stop matching ancestor elements. + /// A string containing a selector expression to match elements against. + /// + /// + }, + 'password': function() { + /// Selects all elements of type password. + }, + 'position': function() { + /// Get the current coordinates of the first element in the set of matched elements, relative to the offset parent. + /// + }, + 'prepend': function() { + /// + /// Insert content, specified by the parameter, to the beginning of each element in the set of matched elements. + /// DOM element, array of elements, HTML string, or jQuery object to insert at the beginning of each element in the set of matched elements. + /// One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert at the beginning of each element in the set of matched elements. + /// + /// + /// + /// Insert content, specified by the parameter, to the beginning of each element in the set of matched elements. + /// A function that returns an HTML string, DOM element(s), or jQuery object to insert at the beginning of each element in the set of matched elements. Receives the index position of the element in the set and the old HTML value of the element as arguments. Within the function, this refers to the current element in the set. + /// + /// + }, + 'prependTo': function() { + /// + /// Insert every element in the set of matched elements to the beginning of the target. + /// A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted at the beginning of the element(s) specified by this parameter. + /// + /// + }, + 'prev': function() { + /// + /// Get the immediately preceding sibling of each element in the set of matched elements, optionally filtered by a selector. + /// A string containing a selector expression to match elements against. + /// + /// + }, + 'prevAll': function() { + /// + /// Get all preceding siblings of each element in the set of matched elements, optionally filtered by a selector. + /// A string containing a selector expression to match elements against. + /// + /// + }, + 'prevUntil': function() { + /// + /// Get all preceding siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object. + /// A string containing a selector expression to indicate where to stop matching preceding sibling elements. + /// A string containing a selector expression to match elements against. + /// + /// + /// + /// Get all preceding siblings of each element up to but not including the element matched by the selector, DOM node, or jQuery object. + /// A DOM node or jQuery object indicating where to stop matching preceding sibling elements. + /// A string containing a selector expression to match elements against. + /// + /// + }, + 'promise': function() { + /// + /// Return a Promise object to observe when all actions of a certain type bound to the collection, queued or not, have finished. + /// The type of queue that needs to be observed. + /// Object onto which the promise methods have to be attached + /// + /// + }, + 'prop': function() { + /// + /// Set one or more properties for the set of matched elements. + /// The name of the property to set. + /// A value to set for the property. + /// + /// + /// + /// Set one or more properties for the set of matched elements. + /// An object of property-value pairs to set. + /// + /// + /// + /// Set one or more properties for the set of matched elements. + /// The name of the property to set. + /// A function returning the value to set. Receives the index position of the element in the set and the old property value as arguments. Within the function, the keyword this refers to the current element. + /// + /// + }, + 'pushStack': function() { + /// + /// Add a collection of DOM elements onto the jQuery stack. + /// An array of elements to push onto the stack and make into a new jQuery object. + /// + /// + /// + /// Add a collection of DOM elements onto the jQuery stack. + /// An array of elements to push onto the stack and make into a new jQuery object. + /// The name of a jQuery method that generated the array of elements. + /// The arguments that were passed in to the jQuery method (for serialization). + /// + /// + }, + 'queue': function() { + /// + /// Manipulate the queue of functions to be executed, once for each matched element. + /// A string containing the name of the queue. Defaults to fx, the standard effects queue. + /// An array of functions to replace the current queue contents. + /// + /// + /// + /// Manipulate the queue of functions to be executed, once for each matched element. + /// A string containing the name of the queue. Defaults to fx, the standard effects queue. + /// The new function to add to the queue, with a function to call that will dequeue the next item. + /// + /// + }, + 'radio': function() { + /// Selects all elements of type radio. + }, + 'ready': function() { + /// + /// Specify a function to execute when the DOM is fully loaded. + /// A function to execute after the DOM is ready. + /// + /// + }, + 'remove': function() { + /// + /// Remove the set of matched elements from the DOM. + /// A selector expression that filters the set of matched elements to be removed. + /// + /// + }, + 'removeAttr': function() { + /// + /// Remove an attribute from each element in the set of matched elements. + /// An attribute to remove; as of version 1.7, it can be a space-separated list of attributes. + /// + /// + }, + 'removeClass': function() { + /// + /// Remove a single class, multiple classes, or all classes from each element in the set of matched elements. + /// One or more space-separated classes to be removed from the class attribute of each matched element. + /// + /// + /// + /// Remove a single class, multiple classes, or all classes from each element in the set of matched elements. + /// A function returning one or more space-separated class names to be removed. Receives the index position of the element in the set and the old class value as arguments. + /// + /// + }, + 'removeData': function() { + /// + /// Remove a previously-stored piece of data. + /// A string naming the piece of data to delete. + /// + /// + /// + /// Remove a previously-stored piece of data. + /// An array or space-separated string naming the pieces of data to delete. + /// + /// + }, + 'removeProp': function() { + /// + /// Remove a property for the set of matched elements. + /// The name of the property to remove. + /// + /// + }, + 'replaceAll': function() { + /// + /// Replace each target element with the set of matched elements. + /// A selector string, jQuery object, or DOM element reference indicating which element(s) to replace. + /// + /// + }, + 'replaceWith': function() { + /// + /// Replace each element in the set of matched elements with the provided new content and return the set of elements that was removed. + /// The content to insert. May be an HTML string, DOM element, or jQuery object. + /// + /// + /// + /// Replace each element in the set of matched elements with the provided new content and return the set of elements that was removed. + /// A function that returns content with which to replace the set of matched elements. + /// + /// + }, + 'reset': function() { + /// Selects all elements of type reset. + }, + 'resize': function() { + /// + /// Bind an event handler to the "resize" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "resize" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'root': function() { + /// Selects the element that is the root of the document. + }, + 'scroll': function() { + /// + /// Bind an event handler to the "scroll" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "scroll" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'scrollLeft': function() { + /// + /// Set the current horizontal position of the scroll bar for each of the set of matched elements. + /// An integer indicating the new position to set the scroll bar to. + /// + /// + }, + 'scrollTop': function() { + /// + /// Set the current vertical position of the scroll bar for each of the set of matched elements. + /// An integer indicating the new position to set the scroll bar to. + /// + /// + }, + 'select': function() { + /// + /// Bind an event handler to the "select" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "select" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'selected': function() { + /// Selects all elements that are selected. + }, + 'selector': function() { + /// A selector representing selector passed to jQuery(), if any, when creating the original set. + /// + }, + 'serialize': function() { + /// Encode a set of form elements as a string for submission. + /// + }, + 'serializeArray': function() { + /// Encode a set of form elements as an array of names and values. + /// + }, + 'show': function() { + /// + /// Display the matched elements. + /// A string or number determining how long the animation will run. + /// A function to call once the animation is complete. + /// + /// + /// + /// Display the matched elements. + /// A map of additional options to pass to the method. + /// + /// + /// + /// Display the matched elements. + /// A string or number determining how long the animation will run. + /// A string indicating which easing function to use for the transition. + /// A function to call once the animation is complete. + /// + /// + }, + 'siblings': function() { + /// + /// Get the siblings of each element in the set of matched elements, optionally filtered by a selector. + /// A string containing a selector expression to match elements against. + /// + /// + }, + 'size': function() { + /// Return the number of elements in the jQuery object. + /// + }, + 'slice': function() { + /// + /// Reduce the set of matched elements to a subset specified by a range of indices. + /// An integer indicating the 0-based position at which the elements begin to be selected. If negative, it indicates an offset from the end of the set. + /// An integer indicating the 0-based position at which the elements stop being selected. If negative, it indicates an offset from the end of the set. If omitted, the range continues until the end of the set. + /// + /// + }, + 'slideDown': function() { + /// + /// Display the matched elements with a sliding motion. + /// A string or number determining how long the animation will run. + /// A function to call once the animation is complete. + /// + /// + /// + /// Display the matched elements with a sliding motion. + /// A map of additional options to pass to the method. + /// + /// + /// + /// Display the matched elements with a sliding motion. + /// A string or number determining how long the animation will run. + /// A string indicating which easing function to use for the transition. + /// A function to call once the animation is complete. + /// + /// + }, + 'slideToggle': function() { + /// + /// Display or hide the matched elements with a sliding motion. + /// A string or number determining how long the animation will run. + /// A function to call once the animation is complete. + /// + /// + /// + /// Display or hide the matched elements with a sliding motion. + /// A map of additional options to pass to the method. + /// + /// + /// + /// Display or hide the matched elements with a sliding motion. + /// A string or number determining how long the animation will run. + /// A string indicating which easing function to use for the transition. + /// A function to call once the animation is complete. + /// + /// + }, + 'slideUp': function() { + /// + /// Hide the matched elements with a sliding motion. + /// A string or number determining how long the animation will run. + /// A function to call once the animation is complete. + /// + /// + /// + /// Hide the matched elements with a sliding motion. + /// A map of additional options to pass to the method. + /// + /// + /// + /// Hide the matched elements with a sliding motion. + /// A string or number determining how long the animation will run. + /// A string indicating which easing function to use for the transition. + /// A function to call once the animation is complete. + /// + /// + }, + 'stop': function() { + /// + /// Stop the currently-running animation on the matched elements. + /// A Boolean indicating whether to remove queued animation as well. Defaults to false. + /// A Boolean indicating whether to complete the current animation immediately. Defaults to false. + /// + /// + /// + /// Stop the currently-running animation on the matched elements. + /// The name of the queue in which to stop animations. + /// A Boolean indicating whether to remove queued animation as well. Defaults to false. + /// A Boolean indicating whether to complete the current animation immediately. Defaults to false. + /// + /// + }, + 'submit': function() { + /// + /// Bind an event handler to the "submit" JavaScript event, or trigger that event on an element. + /// A function to execute each time the event is triggered. + /// + /// + /// + /// Bind an event handler to the "submit" JavaScript event, or trigger that event on an element. + /// An object containing data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'target': function() { + /// Selects the target element indicated by the fragment identifier of the document's URI. + }, + 'text': function() { + /// + /// Set the content of each element in the set of matched elements to the specified text. + /// A string of text to set as the content of each matched element. + /// + /// + /// + /// Set the content of each element in the set of matched elements to the specified text. + /// A function returning the text content to set. Receives the index position of the element in the set and the old text value as arguments. + /// + /// + }, + 'toArray': function() { + /// Retrieve all the DOM elements contained in the jQuery set, as an array. + /// + }, + 'toggle': function() { + /// + /// Display or hide the matched elements. + /// A string or number determining how long the animation will run. + /// A function to call once the animation is complete. + /// + /// + /// + /// Display or hide the matched elements. + /// A map of additional options to pass to the method. + /// + /// + /// + /// Display or hide the matched elements. + /// A string or number determining how long the animation will run. + /// A string indicating which easing function to use for the transition. + /// A function to call once the animation is complete. + /// + /// + /// + /// Display or hide the matched elements. + /// A Boolean indicating whether to show or hide the elements. + /// + /// + }, + 'toggleClass': function() { + /// + /// Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument. + /// One or more class names (separated by spaces) to be toggled for each element in the matched set. + /// + /// + /// + /// Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument. + /// One or more class names (separated by spaces) to be toggled for each element in the matched set. + /// A Boolean (not just truthy/falsy) value to determine whether the class should be added or removed. + /// + /// + /// + /// Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument. + /// A boolean value to determine whether the class should be added or removed. + /// + /// + /// + /// Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument. + /// A function that returns class names to be toggled in the class attribute of each element in the matched set. Receives the index position of the element in the set, the old class value, and the switch as arguments. + /// A boolean value to determine whether the class should be added or removed. + /// + /// + }, + 'trigger': function() { + /// + /// Execute all handlers and behaviors attached to the matched elements for the given event type. + /// A string containing a JavaScript event type, such as click or submit. + /// Additional parameters to pass along to the event handler. + /// + /// + /// + /// Execute all handlers and behaviors attached to the matched elements for the given event type. + /// A jQuery.Event object. + /// Additional parameters to pass along to the event handler. + /// + /// + }, + 'triggerHandler': function() { + /// + /// Execute all handlers attached to an element for an event. + /// A string containing a JavaScript event type, such as click or submit. + /// An array of additional parameters to pass along to the event handler. + /// + /// + }, + 'unbind': function() { + /// + /// Remove a previously-attached event handler from the elements. + /// A string containing a JavaScript event type, such as click or submit. + /// The function that is to be no longer executed. + /// + /// + /// + /// Remove a previously-attached event handler from the elements. + /// A string containing a JavaScript event type, such as click or submit. + /// Unbinds the corresponding 'return false' function that was bound using .bind( eventType, false ). + /// + /// + /// + /// Remove a previously-attached event handler from the elements. + /// A JavaScript event object as passed to an event handler. + /// + /// + }, + 'undelegate': function() { + /// + /// Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements. + /// A selector which will be used to filter the event results. + /// A string containing a JavaScript event type, such as "click" or "keydown" + /// + /// + /// + /// Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements. + /// A selector which will be used to filter the event results. + /// A string containing a JavaScript event type, such as "click" or "keydown" + /// A function to execute at the time the event is triggered. + /// + /// + /// + /// Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements. + /// A selector which will be used to filter the event results. + /// An object of one or more event types and previously bound functions to unbind from them. + /// + /// + /// + /// Remove a handler from the event for all elements which match the current selector, based upon a specific set of root elements. + /// A string containing a namespace to unbind all events from. + /// + /// + }, + 'unload': function() { + /// + /// Bind an event handler to the "unload" JavaScript event. + /// A function to execute when the event is triggered. + /// + /// + /// + /// Bind an event handler to the "unload" JavaScript event. + /// A plain object of data that will be passed to the event handler. + /// A function to execute each time the event is triggered. + /// + /// + }, + 'unwrap': function() { + /// Remove the parents of the set of matched elements from the DOM, leaving the matched elements in their place. + /// + }, + 'val': function() { + /// + /// Set the value of each element in the set of matched elements. + /// A string of text or an array of strings corresponding to the value of each matched element to set as selected/checked. + /// + /// + /// + /// Set the value of each element in the set of matched elements. + /// A function returning the value to set. this is the current element. Receives the index position of the element in the set and the old value as arguments. + /// + /// + }, + 'visible': function() { + /// Selects all elements that are visible. + }, + 'width': function() { + /// + /// Set the CSS width of each element in the set of matched elements. + /// An integer representing the number of pixels, or an integer along with an optional unit of measure appended (as a string). + /// + /// + /// + /// Set the CSS width of each element in the set of matched elements. + /// A function returning the width to set. Receives the index position of the element in the set and the old width as arguments. Within the function, this refers to the current element in the set. + /// + /// + }, + 'wrap': function() { + /// + /// Wrap an HTML structure around each element in the set of matched elements. + /// A selector, element, HTML string, or jQuery object specifying the structure to wrap around the matched elements. + /// + /// + /// + /// Wrap an HTML structure around each element in the set of matched elements. + /// A callback function returning the HTML content or jQuery object to wrap around the matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set. + /// + /// + }, + 'wrapAll': function() { + /// + /// Wrap an HTML structure around all elements in the set of matched elements. + /// A selector, element, HTML string, or jQuery object specifying the structure to wrap around the matched elements. + /// + /// + }, + 'wrapInner': function() { + /// + /// Wrap an HTML structure around the content of each element in the set of matched elements. + /// An HTML snippet, selector expression, jQuery object, or DOM element specifying the structure to wrap around the content of the matched elements. + /// + /// + /// + /// Wrap an HTML structure around the content of each element in the set of matched elements. + /// A callback function which generates a structure to wrap around the content of the matched elements. Receives the index position of the element in the set as an argument. Within the function, this refers to the current element in the set. + /// + /// + }, +}); + +intellisense.annotate(window, { + '$': function() { + /// + /// Accepts a string containing a CSS selector which is then used to match a set of elements. + /// A string containing a selector expression + /// A DOM Element, Document, or jQuery to use as context + /// + /// + /// + /// Accepts a string containing a CSS selector which is then used to match a set of elements. + /// A DOM element to wrap in a jQuery object. + /// + /// + /// + /// Accepts a string containing a CSS selector which is then used to match a set of elements. + /// An array containing a set of DOM elements to wrap in a jQuery object. + /// + /// + /// + /// Accepts a string containing a CSS selector which is then used to match a set of elements. + /// A plain object to wrap in a jQuery object. + /// + /// + /// + /// Accepts a string containing a CSS selector which is then used to match a set of elements. + /// An existing jQuery object to clone. + /// + /// + }, +}); + diff --git a/Sevomin.News/scripts/jquery-2.0.2.js b/Sevomin.News/scripts/jquery-2.0.2.js new file mode 100644 index 0000000..280083f --- /dev/null +++ b/Sevomin.News/scripts/jquery-2.0.2.js @@ -0,0 +1,8842 @@ +/*! + * jQuery JavaScript Library v2.0.2 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2013-05-30T21:25Z + */ +(function( window, undefined ) { + +// Can't do this because several apps including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +// Support: Firefox 18+ +//"use strict"; +var + // A central reference to the root jQuery(document) + rootjQuery, + + // The deferred used on DOM ready + readyList, + + // Support: IE9 + // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined` + core_strundefined = typeof undefined, + + // Use the correct document accordingly with window argument (sandbox) + location = window.location, + document = window.document, + docElem = document.documentElement, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // [[Class]] -> type pairs + class2type = {}, + + // List of deleted data cache ids, so we can reuse them + core_deletedIds = [], + + core_version = "2.0.2", + + // Save a reference to some core methods + core_concat = core_deletedIds.concat, + core_push = core_deletedIds.push, + core_slice = core_deletedIds.slice, + core_indexOf = core_deletedIds.indexOf, + core_toString = class2type.toString, + core_hasOwn = class2type.hasOwnProperty, + core_trim = core_version.trim, + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Used for matching numbers + core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, + + // Used for splitting on whitespace + core_rnotwhite = /\S+/g, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }, + + // The ready event handler and self cleanup method + completed = function() { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + jQuery.ready(); + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: core_version, + + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + 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 = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // 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 ) { + // 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: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // 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 default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return core_slice.call( this ); + }, + + // 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 ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // 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 ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; + }, + + slice: function() { + return this.pushStack( core_slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + }, + + 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: core_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({ + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ), + + 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 ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // 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.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger("ready").off("ready"); + } + }, + + // 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, + + isWindow: function( obj ) { + return obj != null && obj === obj.window; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + if ( obj == null ) { + return String( obj ); + } + // Support: Safari <= 5.1 (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ core_toString.call(obj) ] || "object" : + typeof obj; + }, + + isPlainObject: function( obj ) { + // Not plain objects: + // - Any object or value whose internal [[Class]] property is not "[object Object]" + // - DOM nodes + // - window + if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + // Support: Firefox <20 + // The try/catch suppresses exceptions thrown when attempting to access + // the "constructor" property of certain host objects, ie. |window.location| + // https://bugzilla.mozilla.org/show_bug.cgi?id=814622 + try { + if ( obj.constructor && + !core_hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { + return false; + } + } catch ( e ) { + return false; + } + + // If the function hasn't returned already, we're confident that + // |obj| is a plain object, created by {} or constructed with new Object + return true; + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + // data: string of html + // context (optional): If specified, the fragment will be created in this context, defaults to document + // keepScripts (optional): If true, will include scripts passed in the html string + parseHTML: function( data, context, keepScripts ) { + if ( !data || typeof data !== "string" ) { + return null; + } + if ( typeof context === "boolean" ) { + keepScripts = context; + context = false; + } + context = context || document; + + var parsed = rsingleTag.exec( data ), + scripts = !keepScripts && []; + + // Single tag + if ( parsed ) { + return [ context.createElement( parsed[1] ) ]; + } + + parsed = jQuery.buildFragment( [ data ], context, scripts ); + + if ( scripts ) { + jQuery( scripts ).remove(); + } + + return jQuery.merge( [], parsed.childNodes ); + }, + + parseJSON: JSON.parse, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE9 + try { + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + globalEval: function( code ) { + var script, + indirect = eval; + + code = jQuery.trim( code ); + + if ( code ) { + // If the code includes a valid, prologue position + // strict mode pragma, execute code by injecting a + // script tag into the document. + if ( code.indexOf("use strict") === 1 ) { + script = document.createElement("script"); + script.text = code; + document.head.appendChild( script ).parentNode.removeChild( script ); + } else { + // Otherwise, avoid the DOM node creation, insertion + // and removal by using an indirect global eval + indirect( code ); + } + } + }, + + // 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.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + trim: function( text ) { + return text == null ? "" : core_trim.call( text ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + core_push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : core_indexOf.call( arr, elem, i ); + }, + + merge: function( first, second ) { + var l = second.length, + i = first.length, + j = 0; + + if ( typeof l === "number" ) { + for ( ; 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 retVal, + ret = [], + i = 0, + length = elems.length; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; 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, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // 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 ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return core_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 ) { + var tmp, args, proxy; + + if ( typeof context === "string" ) { + 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 + args = core_slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( core_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 || jQuery.guid++; + + return proxy; + }, + + // Multifunctional method to get and set values of a collection + // The value/s can optionally be executed if it's a function + access: function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; + }, + + now: Date.now, + + // A method for quickly swapping in/out CSS properties to get correct calculations. + // Note: this method belongs to the css module but it's needed here for the support module. + // If support gets modularized, this method should be moved back to the css module. + swap: function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; + } +}); + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + } else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + } + } + return readyList.promise( obj ); +}; + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + var length = obj.length, + type = jQuery.type( obj ); + + if ( jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || type !== "function" && + ( length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj ); +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); +/*! + * Sizzle CSS Selector Engine v1.9.4-pre + * http://sizzlejs.com/ + * + * Copyright 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2013-05-27 + */ +(function( window, undefined ) { + +var i, + support, + cachedruns, + Expr, + getText, + isXML, + compile, + outermostContext, + sortInput, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + -(new Date()), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + hasDuplicate = false, + sortOrder = function() { return 0; }, + + // General-purpose constants + strundefined = typeof undefined, + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf if we can't use a native one + indexOf = arr.indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + + "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", + + // Prefer arguments quoted, + // then not containing pseudos/brackets, + // then attribute selectors/non-parenthetical expressions, + // then anything else + // These preferences are here to reduce the number of selectors + // needing tokenize in the PSEUDO preFilter + pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rsibling = new RegExp( whitespace + "*[+~]" ), + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + // BMP codepoint + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { + return []; + } + + if ( documentIsHTML && !seed ) { + + // Shortcuts + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // 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, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // QSA path + if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + nid = old = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + + // 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 + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && context.parentNode || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * For feature detection + * @param {Function} fn The function to test for native support + */ +function isNative( fn ) { + return rnative.test( fn + "" ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key += " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied if the test fails + * @param {Boolean} test The result of a test. If true, null will be set as the handler in leiu of the specified handler + */ +function addHandle( attrs, handler, test ) { + attrs = attrs.split("|"); + var current, + i = attrs.length, + setHandle = test ? null : handler; + + while ( i-- ) { + // Don't override a user's handler + if ( !(current = Expr.attrHandle[ attrs[i] ]) || current === handler ) { + Expr.attrHandle[ attrs[i] ] = setHandle; + } + } +} + +/** + * Fetches boolean attributes by node + * @param {Element} elem + * @param {String} name + */ +function boolHandler( elem, name ) { + // XML does not need to be checked as this will not be assigned for XML documents + var val = elem.getAttributeNode( name ); + return val && val.specified ? + val.value : + elem[ name ] === true ? name.toLowerCase() : null; +} + +/** + * Fetches attributes without interpolation + * http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx + * @param {Element} elem + * @param {String} name + */ +function interpolationHandler( elem, name ) { + // XML does not need to be checked as this will not be assigned for XML documents + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); +} + +/** + * Uses defaultValue to retrieve value in IE6/7 + * @param {Element} elem + * @param {String} name + */ +function valueHandler( elem ) { + // Ignore the value *property* on inputs by using defaultValue + // Fallback to Sizzle.attr by returning undefined where appropriate + // XML does not need to be checked as this will not be assigned for XML documents + if ( elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns Returns -1 if a precedes b, 1 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Detect xml + * @param {Element|Object} elem An element or a document + */ +isXML = 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).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var doc = node ? node.ownerDocument || node : preferredDoc, + parent = doc.parentWindow; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + + // Support tests + documentIsHTML = !isXML( doc ); + + // Support: IE>8 + // If iframe document is assigned to "document" variable and if iframe has been reloaded, + // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 + if ( parent && parent.frameElement ) { + parent.attachEvent( "onbeforeunload", function() { + setDocument(); + }); + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) + support.attributes = assert(function( div ) { + + // Support: IE<8 + // Prevent attribute/property "interpolation" + div.innerHTML = ""; + addHandle( "type|href|height|width", interpolationHandler, div.firstChild.getAttribute("href") === "#" ); + + // Support: IE<9 + // Use getAttributeNode to fetch booleans when getAttribute lies + addHandle( booleans, boolHandler, div.getAttribute("disabled") == null ); + + div.className = "i"; + return !div.getAttribute("className"); + }); + + // Support: IE<9 + // Retrieving value should defer to defaultValue + support.input = assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; + }); + + // IE6/7 still return empty string for value, + // but are actually retrieving the property + addHandle( "value", valueHandler, support.attributes && support.input ); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Check if getElementsByClassName can be trusted + support.getElementsByClassName = assert(function( div ) { + div.innerHTML = "
    "; + + // Support: Safari<4 + // Catch class over-caching + div.firstChild.className = "i"; + // Support: Opera<10 + // Catch gEBCN failure to find non-leading classes + return div.getElementsByClassName("i").length === 2; + }); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !doc.getElementsByName || !doc.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && documentIsHTML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var elem, + tmp = [], + i = 0, + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = isNative(doc.querySelectorAll)) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + + // Support: Opera 10-12/IE8 + // ^= $= *= and empty values + // Should not select anything + // Support: Windows 8 Native Apps + // The type attribute is restricted during .innerHTML assignment + var input = doc.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "t", "" ); + + if ( div.querySelectorAll("[t^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = isNative( (matches = docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = isNative(docElem.contains) || docElem.compareDocumentPosition ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) + // Detached nodes confoundingly follow *each other* + support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( doc.createElement("div") ) & 1; + }); + + // Document order sorting + sortOrder = docElem.compareDocumentPosition ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b ); + + if ( compare ) { + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === doc || contains(preferredDoc, a) ) { + return -1; + } + if ( b === doc || contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } + + // Not directly comparable, sort on existence of method + return a.compareDocumentPosition ? -1 : 1; + } : + function( a, b ) { + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Parentless nodes are either documents or disconnected + } else if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return doc; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, document, null, [elem] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = ( fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined ); + + return val === undefined ? + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null : + val; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + for ( ; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (see #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[5] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] && match[4] !== undefined ) { + match[2] = match[4]; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "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; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), + // not comment, processing instructions, or others + // Thanks to Diego Perini for the nodeName shortcut + // Greater than "@" means alpha characters (specifically not starting with "#" or "?") + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + // 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" && + elem.type === "text" && + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +function tokenize( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( tokens = [] ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +} + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var data, cache, outerCache, + dirkey = dirruns + " " + doneName; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) { + if ( (data = cache[1]) === true || data === cachedruns ) { + return data === true; + } + } else { + cache = outerCache[ dir ] = [ dirkey ]; + cache[1] = matcher( elem, context, xml ) || cachedruns; + if ( cache[1] === true ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + // A counter to specify which element is currently being matched + var matcherCachedRuns = 0, + bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, expandContext ) { + var elem, j, matcher, + setMatched = [], + matchedCount = 0, + i = "0", + unmatched = seed && [], + outermost = expandContext != null, + contextBackup = outermostContext, + // We must always have either seed elements or context + elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1); + + if ( outermost ) { + outermostContext = context !== document && context; + cachedruns = matcherCachedRuns; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + for ( ; (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + cachedruns = ++matcherCachedRuns; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !group ) { + group = tokenize( selector ); + } + i = group.length; + while ( i-- ) { + cached = matcherFromTokens( group[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + } + return cached; +}; + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function select( selector, context, results, seed ) { + var i, tokens, token, type, find, + match = tokenize( selector ); + + if ( !seed ) { + // Try to minimize operations if there is only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + } + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && context.parentNode || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + } + + // Compile and execute a filtering function + // Provide `match` to avoid retokenization if we modified the selector above + compile( selector, match )( + seed, + context, + !documentIsHTML, + results, + rsibling.test( selector ) + ); + return results; +} + +// Deprecated +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Initialize against the default document +setDocument(); + +// Support: Chrome<<14 +// Always assume duplicates if they aren't passed to the comparison function +[0, 0].sort( sortOrder ); +support.detectDuplicates = hasDuplicate; + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})( window ); +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * 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( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // 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, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( 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 + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + firingLength = 0; + 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 ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( list && ( !fired || stack ) ) { + if ( firing ) { + stack.push( args ); + } else { + fire( 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; +}; +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var action = tuple[ 0 ], + fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = core_slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; + if( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); +jQuery.support = (function( support ) { + var input = document.createElement("input"), + fragment = document.createDocumentFragment(), + div = document.createElement("div"), + select = document.createElement("select"), + opt = select.appendChild( document.createElement("option") ); + + // Finish early in limited environments + if ( !input.type ) { + return support; + } + + input.type = "checkbox"; + + // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 + // Check the default checkbox/radio value ("" on old WebKit; "on" elsewhere) + support.checkOn = input.value !== ""; + + // Must access the parent to make an option select properly + // Support: IE9, IE10 + support.optSelected = opt.selected; + + // Will be defined later + support.reliableMarginRight = true; + support.boxSizingReliable = true; + support.pixelPosition = false; + + // Make sure checked status is properly cloned + // Support: IE9, IE10 + 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; + + // Check if an input maintains its value after becoming a radio + // Support: IE9, IE10 + input = document.createElement("input"); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; + + // #11217 - WebKit loses check when the name is after the checked attribute + input.setAttribute( "checked", "t" ); + input.setAttribute( "name", "t" ); + + fragment.appendChild( input ); + + // Support: Safari 5.1, Android 4.x, Android 2.3 + // old WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: Firefox, Chrome, Safari + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) + support.focusinBubbles = "onfocusin" in window; + + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, marginDiv, + // Support: Firefox, Android 2.3 (Prefixed box-sizing versions). + divReset = "padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box", + body = document.getElementsByTagName("body")[ 0 ]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + container = document.createElement("div"); + container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"; + + // Check box-sizing and margin behavior. + body.appendChild( container ).appendChild( div ); + div.innerHTML = ""; + // Support: Firefox, Android 2.3 (Prefixed box-sizing versions). + div.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%"; + + // Workaround failing boxSizing test due to offsetWidth returning wrong value + // with some non-1 values of body zoom, ticket #13543 + jQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() { + support.boxSizing = div.offsetWidth === 4; + }); + + // Use window.getComputedStyle because jsdom on node.js will break without it. + if ( window.getComputedStyle ) { + support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; + support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; + + // Support: Android 2.3 + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. (#3333) + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + marginDiv = div.appendChild( document.createElement("div") ); + marginDiv.style.cssText = div.style.cssText = divReset; + marginDiv.style.marginRight = marginDiv.style.width = "0"; + div.style.width = "1px"; + + support.reliableMarginRight = + !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); + } + + body.removeChild( container ); + }); + + return support; +})( {} ); + +/* + Implementation Summary + + 1. Enforce API surface and semantic compatibility with 1.9.x branch + 2. Improve the module's maintainability by reducing the storage + paths to a single mechanism. + 3. Use the same single mechanism to support "private" and "user" data. + 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) + 5. Avoid exposing implementation details on user objects (eg. expando properties) + 6. Provide a clear path for implementation upgrade to WeakMap in 2014 +*/ +var data_user, data_priv, + rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, + rmultiDash = /([A-Z])/g; + +function Data() { + // Support: Android < 4, + // Old WebKit does not have Object.preventExtensions/freeze method, + // return new empty object instead with no [[set]] accessor + Object.defineProperty( this.cache = {}, 0, { + get: function() { + return {}; + } + }); + + this.expando = jQuery.expando + Math.random(); +} + +Data.uid = 1; + +Data.accepts = function( owner ) { + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType ? + owner.nodeType === 1 || owner.nodeType === 9 : true; +}; + +Data.prototype = { + key: function( owner ) { + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return the key for a frozen object. + if ( !Data.accepts( owner ) ) { + return 0; + } + + var descriptor = {}, + // Check if the owner object already has a cache key + unlock = owner[ this.expando ]; + + // If not, create one + if ( !unlock ) { + unlock = Data.uid++; + + // Secure it in a non-enumerable, non-writable property + try { + descriptor[ this.expando ] = { value: unlock }; + Object.defineProperties( owner, descriptor ); + + // Support: Android < 4 + // Fallback to a less secure definition + } catch ( e ) { + descriptor[ this.expando ] = unlock; + jQuery.extend( owner, descriptor ); + } + } + + // Ensure the cache object + if ( !this.cache[ unlock ] ) { + this.cache[ unlock ] = {}; + } + + return unlock; + }, + set: function( owner, data, value ) { + var prop, + // There may be an unlock assigned to this node, + // if there is no entry for this "owner", create one inline + // and set the unlock as though an owner entry had always existed + unlock = this.key( owner ), + cache = this.cache[ unlock ]; + + // Handle: [ owner, key, value ] args + if ( typeof data === "string" ) { + cache[ data ] = value; + + // Handle: [ owner, { properties } ] args + } else { + // Fresh assignments by object are shallow copied + if ( jQuery.isEmptyObject( cache ) ) { + jQuery.extend( this.cache[ unlock ], data ); + // Otherwise, copy the properties one-by-one to the cache object + } else { + for ( prop in data ) { + cache[ prop ] = data[ prop ]; + } + } + } + return cache; + }, + get: function( owner, key ) { + // Either a valid cache is found, or will be created. + // New caches will be created and the unlock returned, + // allowing direct access to the newly created + // empty data object. A valid owner object must be provided. + var cache = this.cache[ this.key( owner ) ]; + + return key === undefined ? + cache : cache[ key ]; + }, + access: function( owner, key, value ) { + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ((key && typeof key === "string") && value === undefined) ) { + return this.get( owner, key ); + } + + // [*]When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, name, camel, + unlock = this.key( owner ), + cache = this.cache[ unlock ]; + + if ( key === undefined ) { + this.cache[ unlock ] = {}; + + } else { + // Support array or space separated string of keys + if ( jQuery.isArray( key ) ) { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = key.concat( key.map( jQuery.camelCase ) ); + } else { + camel = jQuery.camelCase( key ); + // Try the string as a key before any manipulation + if ( key in cache ) { + name = [ key, camel ]; + } else { + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + name = camel; + name = name in cache ? + [ name ] : ( name.match( core_rnotwhite ) || [] ); + } + } + + i = name.length; + while ( i-- ) { + delete cache[ name[ i ] ]; + } + } + }, + hasData: function( owner ) { + return !jQuery.isEmptyObject( + this.cache[ owner[ this.expando ] ] || {} + ); + }, + discard: function( owner ) { + if ( owner[ this.expando ] ) { + delete this.cache[ owner[ this.expando ] ]; + } + } +}; + +// These may be used throughout the jQuery core codebase +data_user = new Data(); +data_priv = new Data(); + + +jQuery.extend({ + acceptData: Data.accepts, + + hasData: function( elem ) { + return data_user.hasData( elem ) || data_priv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return data_user.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + data_user.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to data_priv methods, these can be deprecated. + _data: function( elem, name, data ) { + return data_priv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + data_priv.remove( elem, name ); + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var attrs, name, + elem = this[ 0 ], + i = 0, + data = null; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = data_user.get( elem ); + + if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) { + attrs = elem.attributes; + for ( ; i < attrs.length; i++ ) { + name = attrs[ i ].name; + + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice(5) ); + dataAttr( elem, name, data[ name ] ); + } + } + data_priv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + data_user.set( this, key ); + }); + } + + return jQuery.access( this, function( value ) { + var data, + camelKey = jQuery.camelCase( key ); + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + // Attempt to get data from the cache + // with the key as-is + data = data_user.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to get data from the cache + // with the key camelized + data = data_user.get( elem, camelKey ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, camelKey, undefined ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each(function() { + // First, attempt to store a copy or reference of any + // data that might've been store with a camelCased key. + var data = data_user.get( this, camelKey ); + + // For HTML5 data-* attribute interop, we have to + // store property names with dashes in a camelCase form. + // This might not apply to all properties...* + data_user.set( this, camelKey, value ); + + // *... In the case of properties that might _actually_ + // have dashes, we need to also store a copy of that + // unchanged property. + if ( key.indexOf("-") !== -1 && data !== undefined ) { + data_user.set( this, key, value ); + } + }); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each(function() { + data_user.remove( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + 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 : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? JSON.parse( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + data_user.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = data_priv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray( data ) ) { + queue = data_priv.access( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return data_priv.get( elem, key ) || data_priv.access( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + data_priv.remove( elem, [ type + "queue", key ] ); + }) + }); + } +}); + +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 ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + 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, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while( i-- ) { + tmp = data_priv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var nodeHook, boolHook, + rclass = /[\t\r\n\f]/g, + rreturn = /\r/g, + rfocusable = /^(?:input|select|textarea|button)$/i; + +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 ) { + return this.each(function() { + delete this[ jQuery.propFix[ name ] || name ]; + }); + }, + + addClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call( this, j, this.className ) ); + }); + } + + if ( proceed ) { + // The disjunction here is for better compressibility (see removeClass) + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + " " + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + elem.className = jQuery.trim( cur ); + + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = arguments.length === 0 || typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call( this, j, this.className ) ); + }); + } + if ( proceed ) { + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + "" + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + elem.className = value ? jQuery.trim( cur ) : ""; + } + } + } + + 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.match( core_rnotwhite ) || []; + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space separated list + state = isBool ? state : !self.hasClass( className ); + self[ state ? "addClass" : "removeClass" ]( className ); + } + + // Toggle whole class name + } else if ( type === core_strundefined || type === "boolean" ) { + if ( this.className ) { + // store className if set + data_priv.set( this, "__className__", this.className ); + } + + // If the element has a class name or if we're passed "false", + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + this.className = this.className || value === false ? "" : data_priv.get( 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 ) >= 0 ) { + 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 val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, jQuery( this ).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, option, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one" || index < 0, + values = one ? null : [], + max = one ? index + 1 : options.length, + i = index < 0 ? + max : + one ? index : 0; + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // IE6-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + // Don't return options that are disabled or in a disabled optgroup + ( 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 ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) { + optionSet = true; + } + } + + // force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attr: function( elem, name, value ) { + var hooks, ret, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === core_strundefined ) { + return jQuery.prop( elem, name, value ); + } + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + + } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, value + "" ); + return value; + } + + } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var name, propName, + i = 0, + attrNames = value && value.match( core_rnotwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( (name = attrNames[i++]) ) { + propName = jQuery.propFix[ name ] || name; + + // Boolean attributes get special treatment (#10870) + if ( jQuery.expr.match.bool.test( name ) ) { + // Set corresponding property to false + elem[ propName ] = false; + } + + elem.removeAttribute( name ); + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + 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 default in case type is set after value during creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + }, + + 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 ) { + return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ? + ret : + ( elem[ name ] = value ); + + } else { + return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ? + ret : + elem[ name ]; + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ? + elem.tabIndex : + -1; + } + } + } +}); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr; + + jQuery.expr.attrHandle[ name ] = function( elem, name, isXML ) { + var fn = jQuery.expr.attrHandle[ name ], + ret = isXML ? + undefined : + /* jshint eqeqeq: false */ + // Temporarily disable this handler to check existence + (jQuery.expr.attrHandle[ name ] = undefined) != + getter( elem, name, isXML ) ? + + name.toLowerCase() : + null; + + // Restore handler + jQuery.expr.attrHandle[ name ] = fn; + + return ret; + }; +}); + +// Support: IE9+ +// Selectedness for an option in an optgroup can be inaccurate +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + } + }; +} + +jQuery.each([ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +}); + +// Radios and checkboxes getter/setter +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }; + if ( !jQuery.support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + // Support: Webkit + // "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + }; + } +}); +var rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = data_priv.get( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + 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 + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = 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 !== core_strundefined && (!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 + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // 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: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + } + } + } + + 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; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = data_priv.hasData( elem ) && data_priv.get( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // 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; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.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 ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + data_priv.remove( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, + eventPath = [ elem || document ], + type = core_hasOwn.call( event, "type" ) ? event.type : event, + namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // 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 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // 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 ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && 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) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply && 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( eventPath.pop(), data ) === false) && + jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + 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 ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, j, ret, matched, handleObj, + handlerQueue = [], + args = core_slice.call( arguments ), + handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // 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 + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = 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; + }, + + handlers: function( event, handlers ) { + var i, matches, sel, handleObj, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.disabled !== true || event.type !== "click" ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: "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 offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var eventDoc, doc, body, + button = original.button; + + // 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 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, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: Cordova 2.5 (WebKit) (#13255) + // All events should have a target; Cordova deviceready doesn't + if ( !event.target ) { + event.target = document; + } + + // Support: Safari 6.0+, Chrome < 28 + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + return fixHook.filter? fixHook.filter( event, originalEvent ) : event; + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + this.focus(); + return false; + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + 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(); + } + } +}; + +jQuery.removeEvent = function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } +}; + +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.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; +}; + +// 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 = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && e.preventDefault ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && e.stopPropagation ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +// Support: Chrome 15+ +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // 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; + } + }; +}); + +// Create "bubbling" focus and blur events +// Support: Firefox, Chrome, Safari +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = 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 ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + 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 ( 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 ); + }); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); +var isSimple = /^.[^:#\[\.,]*$/, + rparentsprev = /^(?:parents|prev(?:Until|All))/, + rneedsContext = jQuery.expr.match.needsContext, + // 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 i, + ret = [], + self = this, + len = self.length; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter(function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector || [], true) ); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector || [], false) ); + }, + + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + pos = ( rneedsContext.test( selectors ) || typeof selectors !== "string" ) ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { + // Always skip document fragments + if ( cur.nodeType < 11 && (pos ? + pos.index(cur) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector(cur, selectors)) ) { + + cur = matched.push( cur ); + break; + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); + }, + + // 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.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return core_indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return core_indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + 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( jQuery.unique(all) ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +function sibling( cur, dir ) { + while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {} + + return cur; +} + +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 sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "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 elem.contentDocument || jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.unique( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + })); + }, + + dir: function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; + }, + + sibling: function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + }); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + }); + + } + + if ( typeof qualifier === "string" ) { + if ( isSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( core_indexOf.call( qualifier, elem ) >= 0 ) !== not; + }); +} +var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rhtml = /<|&#?\w+;/, + rnoInnerhtml = /<(?:script|style|link)/i, + manipulation_rcheckableType = /^(?:checkbox|radio)$/i, + // checked="checked" or checked + rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, + rscriptType = /^$|\/(?:java|ecma)script/i, + rscriptTypeMasked = /^true\/(.*)/, + rcleanScript = /^\s*\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + + // Support: IE 9 + option: [ 1, "" ], + + thead: [ 1, "", "
    " ], + col: [ 2, "", "
    " ], + tr: [ 2, "", "
    " ], + td: [ 3, "", "
    " ], + + _default: [ 0, "", "" ] + }; + +// Support: IE 9 +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +jQuery.fn.extend({ + text: function( value ) { + return jQuery.access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + append: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + }); + }, + + before: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + // keepData is for internal use only--do not document + remove: function( selector, keepData ) { + var elem, + elems = selector ? jQuery.filter( selector, this ) : this, + i = 0; + + for ( ; (elem = elems[i]) != null; i++ ) { + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function () { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return jQuery.access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var + // Snapshot the DOM in case .domManip sweeps something relevant into its fragment + args = jQuery.map( this, function( elem ) { + return [ elem.nextSibling, elem.parentNode ]; + }), + i = 0; + + // Make the changes, replacing each context element with the new content + this.domManip( arguments, function( elem ) { + var next = args[ i++ ], + parent = args[ i++ ]; + + if ( parent ) { + // Don't use the snapshot next if it has moved (#13810) + if ( next && next.parentNode !== parent ) { + next = this.nextSibling; + } + jQuery( this ).remove(); + parent.insertBefore( elem, next ); + } + // Allow new content to include elements from the context set + }, true ); + + // Force removal if there was no new content (e.g., from empty arguments) + return i ? this : this.remove(); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, callback, allowIntersection ) { + + // Flatten any nested arrays + args = core_concat.apply( [], args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[ 0 ], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + self.domManip( args, callback, allowIntersection ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, !allowIntersection && this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + // Support: QtWebKit + // jQuery.merge because core_push.apply(_, arraylike) throws + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( this[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Hope ajax is available... + jQuery._evalUrl( node.src ); + } else { + jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) ); + } + } + } + } + } + } + + return this; + } +}); + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: QtWebKit + // .get() because core_push.apply(_, arraylike) throws + core_push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = jQuery.contains( elem.ownerDocument, elem ); + + // Support: IE >= 9 + // Fix Cloning issues + if ( !jQuery.support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var elem, tmp, tag, wrap, contains, j, + i = 0, + l = elems.length, + fragment = context.createDocumentFragment(), + nodes = []; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + // Support: QtWebKit + // jQuery.merge because core_push.apply(_, arraylike) throws + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || ["", ""] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.firstChild; + } + + // Support: QtWebKit + // jQuery.merge because core_push.apply(_, arraylike) throws + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Fixes #12346 + // Support: Webkit, IE + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; + }, + + cleanData: function( elems ) { + var data, elem, events, type, key, j, + special = jQuery.event.special, + i = 0; + + for ( ; (elem = elems[ i ]) !== undefined; i++ ) { + if ( Data.accepts( elem ) ) { + key = elem[ data_priv.expando ]; + + if ( key && (data = data_priv.cache[ key ]) ) { + events = Object.keys( data.events || {} ); + if ( events.length ) { + for ( j = 0; (type = events[j]) !== undefined; j++ ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + if ( data_priv.cache[ key ] ) { + // Discard any remaining `private` data + delete data_priv.cache[ key ]; + } + } + } + // Discard any remaining `user` data + delete data_user.cache[ elem[ data_user.expando ] ]; + } + }, + + _evalUrl: function( url ) { + return jQuery.ajax({ + url: url, + type: "GET", + dataType: "script", + async: false, + global: false, + "throws": true + }); + } +}); + +// Support: 1.x compatibility +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType === 1 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName("tbody")[0] || + elem.appendChild( elem.ownerDocument.createElement("tbody") ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + + if ( match ) { + elem.type = match[ 1 ]; + } else { + elem.removeAttribute("type"); + } + + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var l = elems.length, + i = 0; + + for ( ; i < l; i++ ) { + data_priv.set( + elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" ) + ); + } +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( data_priv.hasData( src ) ) { + pdataOld = data_priv.access( src ); + pdataCur = data_priv.set( dest, pdataOld ); + events = pdataOld.events; + + if ( events ) { + delete pdataCur.handle; + pdataCur.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( data_user.hasData( src ) ) { + udataOld = data_user.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + data_user.set( dest, udataCur ); + } +} + + +function getAll( context, tag ) { + var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) : + context.querySelectorAll ? context.querySelectorAll( tag || "*" ) : + []; + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], ret ) : + ret; +} + +// Support: IE >= 9 +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} +jQuery.fn.extend({ + wrapAll: function( html ) { + var wrap; + + if ( jQuery.isFunction( html ) ) { + return this.each(function( i ) { + jQuery( this ).wrapAll( html.call(this, i) ); + }); + } + + if ( this[ 0 ] ) { + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map(function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + }).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function( i ) { + jQuery( this ).wrapInner( html.call(this, i) ); + }); + } + + return this.each(function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + }); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each(function( i ) { + jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); + }); + }, + + unwrap: function() { + return this.parent().each(function() { + if ( !jQuery.nodeName( this, "body" ) ) { + jQuery( this ).replaceWith( this.childNodes ); + } + }).end(); + } +}); +var curCSS, iframe, + // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" + // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rmargin = /^margin/, + rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), + rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), + rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ), + elemdisplay = { BODY: "block" }, + + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: 0, + fontWeight: 400 + }, + + cssExpand = [ "Top", "Right", "Bottom", "Left" ], + cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; + +// return a css property mapped to a potentially vendor prefixed property +function vendorPropName( style, name ) { + + // shortcut for names that are not vendor prefixed + if ( name in style ) { + return name; + } + + // check for vendor prefixed names + var capName = name.charAt(0).toUpperCase() + name.slice(1), + origName = name, + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in style ) { + return name; + } + } + + return origName; +} + +function isHidden( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); +} + +// NOTE: we've included the "window" in window.getComputedStyle +// because jsdom on node.js will break without it. +function getStyles( elem ) { + return window.getComputedStyle( elem, null ); +} + +function showHide( elements, show ) { + var display, elem, hidden, + values = [], + index = 0, + length = elements.length; + + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + values[ index ] = data_priv.get( elem, "olddisplay" ); + display = elem.style.display; + if ( show ) { + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if ( !values[ index ] && display === "none" ) { + elem.style.display = ""; + } + + // Set elements which have been overridden with display: none + // in a stylesheet to whatever the default browser style is + // for such an element + if ( elem.style.display === "" && isHidden( elem ) ) { + values[ index ] = data_priv.access( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); + } + } else { + + if ( !values[ index ] ) { + hidden = isHidden( elem ); + + if ( display && display !== "none" || !hidden ) { + data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css(elem, "display") ); + } + } + } + } + + // Set the display of most of the elements in a second loop + // to avoid the constant reflow + for ( index = 0; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + if ( !show || elem.style.display === "none" || elem.style.display === "" ) { + elem.style.display = show ? values[ index ] || "" : "none"; + } + } + + return elements; +} + +jQuery.fn.extend({ + css: function( name, value ) { + return jQuery.access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( jQuery.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + }, + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + var bool = typeof state === "boolean"; + + return this.each(function() { + if ( bool ? state : isHidden( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + }); + } +}); + +jQuery.extend({ + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "columnCount": true, + "fillOpacity": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + // normalize float css property + "float": "cssFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + style = elem.style; + + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // convert relative number strings (+= or -=) to relative numbers. #7345 + if ( type === "string" && (ret = rrelNum.exec( value )) ) { + value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); + // Fixes bug #9237 + type = "number"; + } + + // Make sure that NaN and null values aren't set. See: #7116 + if ( value == null || type === "number" && isNaN( value ) ) { + return; + } + + // If a number was passed in, add 'px' to the (except for certain CSS properties) + if ( type === "number" && !jQuery.cssNumber[ origName ] ) { + value += "px"; + } + + // Fixes #8908, it can be done more correctly by specifying setters in cssHooks, + // but it would mean to define eight (for every problematic property) identical functions + if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { + style[ name ] = value; + } + + } else { + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = jQuery.camelCase( name ); + + // Make sure that we're working with the right name + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + //convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Return, converting to number if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; + } + return val; + } +}); + +curCSS = function( elem, name, _computed ) { + var width, minWidth, maxWidth, + computed = _computed || getStyles( elem ), + + // Support: IE9 + // getPropertyValue is only needed for .css('filter') in IE9, see #12537 + ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined, + style = elem.style; + + if ( computed ) { + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // Support: Safari 5.1 + // A tribute to the "awesome hack by Dean Edwards" + // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels + // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values + if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret; +}; + + +function setPositiveNumber( elem, value, subtract ) { + var matches = rnumsplit.exec( value ); + return matches ? + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i = extra === ( isBorderBox ? "border" : "content" ) ? + // If we already have the right measurement, avoid augmentation + 4 : + // Otherwise initialize for horizontal or vertical properties + name === "width" ? 1 : 0, + + val = 0; + + for ( ; i < 4; i += 2 ) { + // both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // at this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + // at this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // at this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with offset property, which is equivalent to the border-box value + var valueIsBorderBox = true, + val = name === "width" ? elem.offsetWidth : elem.offsetHeight, + styles = getStyles( elem ), + isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // some non-html elements return undefined for offsetWidth, so check for null/undefined + // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 + // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 + if ( val <= 0 || val == null ) { + // Fall back to computed then uncomputed css if necessary + val = curCSS( elem, name, styles ); + if ( val < 0 || val == null ) { + val = elem.style[ name ]; + } + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test(val) ) { + return val; + } + + // we need the check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + } + + // use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +// Try to determine the default display value of an element +function css_defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + // Use the already-created iframe if possible + iframe = ( iframe || + jQuery("' : ''); + inst._keyEvent = false; + return html; + }, + + /* Generate the month and year header. */ + _generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate, + secondary, monthNames, monthNamesShort) { + var changeMonth = this._get(inst, 'changeMonth'); + var changeYear = this._get(inst, 'changeYear'); + var showMonthAfterYear = this._get(inst, 'showMonthAfterYear'); + var html = '
    '; + var monthHtml = ''; + // month selection + if (secondary || !changeMonth) + monthHtml += '' + monthNames[drawMonth] + ''; + else { + var inMinYear = (minDate && minDate.getFullYear() == drawYear); + var inMaxYear = (maxDate && maxDate.getFullYear() == drawYear); + monthHtml += ''; + } + if (!showMonthAfterYear) + html += monthHtml + (secondary || !(changeMonth && changeYear) ? ' ' : ''); + // year selection + if ( !inst.yearshtml ) { + inst.yearshtml = ''; + if (secondary || !changeYear) + html += '' + drawYear + ''; + else { + // determine range of years to display + var years = this._get(inst, 'yearRange').split(':'); + var thisYear = new Date().getFullYear(); + var determineYear = function(value) { + var year = (value.match(/c[+-].*/) ? drawYear + parseInt(value.substring(1), 10) : + (value.match(/[+-].*/) ? thisYear + parseInt(value, 10) : + parseInt(value, 10))); + return (isNaN(year) ? thisYear : year); + }; + var year = determineYear(years[0]); + var endYear = Math.max(year, determineYear(years[1] || '')); + year = (minDate ? Math.max(year, minDate.getFullYear()) : year); + endYear = (maxDate ? Math.min(endYear, maxDate.getFullYear()) : endYear); + inst.yearshtml += ''; + + html += inst.yearshtml; + inst.yearshtml = null; + } + } + html += this._get(inst, 'yearSuffix'); + if (showMonthAfterYear) + html += (secondary || !(changeMonth && changeYear) ? ' ' : '') + monthHtml; + html += '
    '; // Close datepicker_header + return html; + }, + + /* Adjust one of the date sub-fields. */ + _adjustInstDate: function(inst, offset, period) { + var year = inst.drawYear + (period == 'Y' ? offset : 0); + var month = inst.drawMonth + (period == 'M' ? offset : 0); + var day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + + (period == 'D' ? offset : 0); + var date = this._restrictMinMax(inst, + this._daylightSavingAdjust(new Date(year, month, day))); + inst.selectedDay = date.getDate(); + inst.drawMonth = inst.selectedMonth = date.getMonth(); + inst.drawYear = inst.selectedYear = date.getFullYear(); + if (period == 'M' || period == 'Y') + this._notifyChange(inst); + }, + + /* Ensure a date is within any min/max bounds. */ + _restrictMinMax: function(inst, date) { + var minDate = this._getMinMaxDate(inst, 'min'); + var maxDate = this._getMinMaxDate(inst, 'max'); + var newDate = (minDate && date < minDate ? minDate : date); + newDate = (maxDate && newDate > maxDate ? maxDate : newDate); + return newDate; + }, + + /* Notify change of month/year. */ + _notifyChange: function(inst) { + var onChange = this._get(inst, 'onChangeMonthYear'); + if (onChange) + onChange.apply((inst.input ? inst.input[0] : null), + [inst.selectedYear, inst.selectedMonth + 1, inst]); + }, + + /* Determine the number of months to show. */ + _getNumberOfMonths: function(inst) { + var numMonths = this._get(inst, 'numberOfMonths'); + return (numMonths == null ? [1, 1] : (typeof numMonths == 'number' ? [1, numMonths] : numMonths)); + }, + + /* Determine the current maximum date - ensure no time components are set. */ + _getMinMaxDate: function(inst, minMax) { + return this._determineDate(inst, this._get(inst, minMax + 'Date'), null); + }, + + /* Find the number of days in a given month. */ + _getDaysInMonth: function(year, month) { + return 32 - this._daylightSavingAdjust(new Date(year, month, 32)).getDate(); + }, + + /* Find the day of the week of the first of a month. */ + _getFirstDayOfMonth: function(year, month) { + return new Date(year, month, 1).getDay(); + }, + + /* Determines if we should allow a "next/prev" month display change. */ + _canAdjustMonth: function(inst, offset, curYear, curMonth) { + var numMonths = this._getNumberOfMonths(inst); + var date = this._daylightSavingAdjust(new Date(curYear, + curMonth + (offset < 0 ? offset : numMonths[0] * numMonths[1]), 1)); + if (offset < 0) + date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth())); + return this._isInRange(inst, date); + }, + + /* Is the given date in the accepted range? */ + _isInRange: function(inst, date) { + var minDate = this._getMinMaxDate(inst, 'min'); + var maxDate = this._getMinMaxDate(inst, 'max'); + return ((!minDate || date.getTime() >= minDate.getTime()) && + (!maxDate || date.getTime() <= maxDate.getTime())); + }, + + /* Provide the configuration settings for formatting/parsing. */ + _getFormatConfig: function(inst) { + var shortYearCutoff = this._get(inst, 'shortYearCutoff'); + shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff : + new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10)); + return {shortYearCutoff: shortYearCutoff, + dayNamesShort: this._get(inst, 'dayNamesShort'), dayNames: this._get(inst, 'dayNames'), + monthNamesShort: this._get(inst, 'monthNamesShort'), monthNames: this._get(inst, 'monthNames')}; + }, + + /* Format the given date for display. */ + _formatDate: function(inst, day, month, year) { + if (!day) { + inst.currentDay = inst.selectedDay; + inst.currentMonth = inst.selectedMonth; + inst.currentYear = inst.selectedYear; + } + var date = (day ? (typeof day == 'object' ? day : + this._daylightSavingAdjust(new Date(year, month, day))) : + this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay))); + return this.formatDate(this._get(inst, 'dateFormat'), date, this._getFormatConfig(inst)); + } +}); + +/* + * Bind hover events for datepicker elements. + * Done via delegate so the binding only occurs once in the lifetime of the parent div. + * Global instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker. + */ +function bindHover(dpDiv) { + var selector = 'button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a'; + return dpDiv.bind('mouseout', function(event) { + var elem = $( event.target ).closest( selector ); + if ( !elem.length ) { + return; + } + elem.removeClass( "ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover" ); + }) + .bind('mouseover', function(event) { + var elem = $( event.target ).closest( selector ); + if ($.datepicker._isDisabledDatepicker( instActive.inline ? dpDiv.parent()[0] : instActive.input[0]) || + !elem.length ) { + return; + } + elem.parents('.ui-datepicker-calendar').find('a').removeClass('ui-state-hover'); + elem.addClass('ui-state-hover'); + if (elem.hasClass('ui-datepicker-prev')) elem.addClass('ui-datepicker-prev-hover'); + if (elem.hasClass('ui-datepicker-next')) elem.addClass('ui-datepicker-next-hover'); + }); +} + +/* jQuery extend now ignores nulls! */ +function extendRemove(target, props) { + $.extend(target, props); + for (var name in props) + if (props[name] == null || props[name] == undefined) + target[name] = props[name]; + return target; +}; + +/* Determine whether an object is an array. */ +function isArray(a) { + return (a && (($.browser.safari && typeof a == 'object' && a.length) || + (a.constructor && a.constructor.toString().match(/\Array\(\)/)))); +}; + +/* Invoke the datepicker functionality. + @param options string - a command, optionally followed by additional parameters or + Object - settings for attaching new datepicker functionality + @return jQuery object */ +$.fn.datepicker = function(options){ + + /* Verify an empty collection wasn't passed - Fixes #6976 */ + if ( !this.length ) { + return this; + } + + /* Initialise the date picker. */ + if (!$.datepicker.initialized) { + $(document).mousedown($.datepicker._checkExternalClick). + find('body').append($.datepicker.dpDiv); + $.datepicker.initialized = true; + } + + var otherArgs = Array.prototype.slice.call(arguments, 1); + if (typeof options == 'string' && (options == 'isDisabled' || options == 'getDate' || options == 'widget')) + return $.datepicker['_' + options + 'Datepicker']. + apply($.datepicker, [this[0]].concat(otherArgs)); + if (options == 'option' && arguments.length == 2 && typeof arguments[1] == 'string') + return $.datepicker['_' + options + 'Datepicker']. + apply($.datepicker, [this[0]].concat(otherArgs)); + return this.each(function() { + typeof options == 'string' ? + $.datepicker['_' + options + 'Datepicker']. + apply($.datepicker, [this].concat(otherArgs)) : + $.datepicker._attachDatepicker(this, options); + }); +}; + +$.datepicker = new Datepicker(); // singleton instance +$.datepicker.initialized = false; +$.datepicker.uuid = new Date().getTime(); +$.datepicker.version = "1.8.24"; + +// Workaround for #4055 +// Add another global to avoid noConflict issues with inline event handlers +window['DP_jQuery_' + dpuuid] = $; + +})(jQuery); + +(function( $, undefined ) { + +var uiDialogClasses = + 'ui-dialog ' + + 'ui-widget ' + + 'ui-widget-content ' + + 'ui-corner-all ', + sizeRelatedOptions = { + buttons: true, + height: true, + maxHeight: true, + maxWidth: true, + minHeight: true, + minWidth: true, + width: true + }, + resizableRelatedOptions = { + maxHeight: true, + maxWidth: true, + minHeight: true, + minWidth: true + }; + +$.widget("ui.dialog", { + options: { + autoOpen: true, + buttons: {}, + closeOnEscape: true, + closeText: 'close', + dialogClass: '', + draggable: true, + hide: null, + height: 'auto', + maxHeight: false, + maxWidth: false, + minHeight: 150, + minWidth: 150, + modal: false, + position: { + my: 'center', + at: 'center', + collision: 'fit', + // ensure that the titlebar is never outside the document + using: function(pos) { + var topOffset = $(this).css(pos).offset().top; + if (topOffset < 0) { + $(this).css('top', pos.top - topOffset); + } + } + }, + resizable: true, + show: null, + stack: true, + title: '', + width: 300, + zIndex: 1000 + }, + + _create: function() { + this.originalTitle = this.element.attr('title'); + // #5742 - .attr() might return a DOMElement + if ( typeof this.originalTitle !== "string" ) { + this.originalTitle = ""; + } + + this.options.title = this.options.title || this.originalTitle; + var self = this, + options = self.options, + + title = options.title || ' ', + titleId = $.ui.dialog.getTitleId(self.element), + + uiDialog = (self.uiDialog = $('
    ')) + .appendTo(document.body) + .hide() + .addClass(uiDialogClasses + options.dialogClass) + .css({ + zIndex: options.zIndex + }) + // setting tabIndex makes the div focusable + // setting outline to 0 prevents a border on focus in Mozilla + .attr('tabIndex', -1).css('outline', 0).keydown(function(event) { + if (options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && + event.keyCode === $.ui.keyCode.ESCAPE) { + + self.close(event); + event.preventDefault(); + } + }) + .attr({ + role: 'dialog', + 'aria-labelledby': titleId + }) + .mousedown(function(event) { + self.moveToTop(false, event); + }), + + uiDialogContent = self.element + .show() + .removeAttr('title') + .addClass( + 'ui-dialog-content ' + + 'ui-widget-content') + .appendTo(uiDialog), + + uiDialogTitlebar = (self.uiDialogTitlebar = $('
    ')) + .addClass( + 'ui-dialog-titlebar ' + + 'ui-widget-header ' + + 'ui-corner-all ' + + 'ui-helper-clearfix' + ) + .prependTo(uiDialog), + + uiDialogTitlebarClose = $('') + .addClass( + 'ui-dialog-titlebar-close ' + + 'ui-corner-all' + ) + .attr('role', 'button') + .hover( + function() { + uiDialogTitlebarClose.addClass('ui-state-hover'); + }, + function() { + uiDialogTitlebarClose.removeClass('ui-state-hover'); + } + ) + .focus(function() { + uiDialogTitlebarClose.addClass('ui-state-focus'); + }) + .blur(function() { + uiDialogTitlebarClose.removeClass('ui-state-focus'); + }) + .click(function(event) { + self.close(event); + return false; + }) + .appendTo(uiDialogTitlebar), + + uiDialogTitlebarCloseText = (self.uiDialogTitlebarCloseText = $('')) + .addClass( + 'ui-icon ' + + 'ui-icon-closethick' + ) + .text(options.closeText) + .appendTo(uiDialogTitlebarClose), + + uiDialogTitle = $('') + .addClass('ui-dialog-title') + .attr('id', titleId) + .html(title) + .prependTo(uiDialogTitlebar); + + //handling of deprecated beforeclose (vs beforeClose) option + //Ticket #4669 http://dev.jqueryui.com/ticket/4669 + //TODO: remove in 1.9pre + if ($.isFunction(options.beforeclose) && !$.isFunction(options.beforeClose)) { + options.beforeClose = options.beforeclose; + } + + uiDialogTitlebar.find("*").add(uiDialogTitlebar).disableSelection(); + + if (options.draggable && $.fn.draggable) { + self._makeDraggable(); + } + if (options.resizable && $.fn.resizable) { + self._makeResizable(); + } + + self._createButtons(options.buttons); + self._isOpen = false; + + if ($.fn.bgiframe) { + uiDialog.bgiframe(); + } + }, + + _init: function() { + if ( this.options.autoOpen ) { + this.open(); + } + }, + + destroy: function() { + var self = this; + + if (self.overlay) { + self.overlay.destroy(); + } + self.uiDialog.hide(); + self.element + .unbind('.dialog') + .removeData('dialog') + .removeClass('ui-dialog-content ui-widget-content') + .hide().appendTo('body'); + self.uiDialog.remove(); + + if (self.originalTitle) { + self.element.attr('title', self.originalTitle); + } + + return self; + }, + + widget: function() { + return this.uiDialog; + }, + + close: function(event) { + var self = this, + maxZ, thisZ; + + if (false === self._trigger('beforeClose', event)) { + return; + } + + if (self.overlay) { + self.overlay.destroy(); + } + self.uiDialog.unbind('keypress.ui-dialog'); + + self._isOpen = false; + + if (self.options.hide) { + self.uiDialog.hide(self.options.hide, function() { + self._trigger('close', event); + }); + } else { + self.uiDialog.hide(); + self._trigger('close', event); + } + + $.ui.dialog.overlay.resize(); + + // adjust the maxZ to allow other modal dialogs to continue to work (see #4309) + if (self.options.modal) { + maxZ = 0; + $('.ui-dialog').each(function() { + if (this !== self.uiDialog[0]) { + thisZ = $(this).css('z-index'); + if(!isNaN(thisZ)) { + maxZ = Math.max(maxZ, thisZ); + } + } + }); + $.ui.dialog.maxZ = maxZ; + } + + return self; + }, + + isOpen: function() { + return this._isOpen; + }, + + // the force parameter allows us to move modal dialogs to their correct + // position on open + moveToTop: function(force, event) { + var self = this, + options = self.options, + saveScroll; + + if ((options.modal && !force) || + (!options.stack && !options.modal)) { + return self._trigger('focus', event); + } + + if (options.zIndex > $.ui.dialog.maxZ) { + $.ui.dialog.maxZ = options.zIndex; + } + if (self.overlay) { + $.ui.dialog.maxZ += 1; + self.overlay.$el.css('z-index', $.ui.dialog.overlay.maxZ = $.ui.dialog.maxZ); + } + + //Save and then restore scroll since Opera 9.5+ resets when parent z-Index is changed. + // http://ui.jquery.com/bugs/ticket/3193 + saveScroll = { scrollTop: self.element.scrollTop(), scrollLeft: self.element.scrollLeft() }; + $.ui.dialog.maxZ += 1; + self.uiDialog.css('z-index', $.ui.dialog.maxZ); + self.element.attr(saveScroll); + self._trigger('focus', event); + + return self; + }, + + open: function() { + if (this._isOpen) { return; } + + var self = this, + options = self.options, + uiDialog = self.uiDialog; + + self.overlay = options.modal ? new $.ui.dialog.overlay(self) : null; + self._size(); + self._position(options.position); + uiDialog.show(options.show); + self.moveToTop(true); + + // prevent tabbing out of modal dialogs + if ( options.modal ) { + uiDialog.bind( "keydown.ui-dialog", function( event ) { + if ( event.keyCode !== $.ui.keyCode.TAB ) { + return; + } + + var tabbables = $(':tabbable', this), + first = tabbables.filter(':first'), + last = tabbables.filter(':last'); + + if (event.target === last[0] && !event.shiftKey) { + first.focus(1); + return false; + } else if (event.target === first[0] && event.shiftKey) { + last.focus(1); + return false; + } + }); + } + + // set focus to the first tabbable element in the content area or the first button + // if there are no tabbable elements, set focus on the dialog itself + $(self.element.find(':tabbable').get().concat( + uiDialog.find('.ui-dialog-buttonpane :tabbable').get().concat( + uiDialog.get()))).eq(0).focus(); + + self._isOpen = true; + self._trigger('open'); + + return self; + }, + + _createButtons: function(buttons) { + var self = this, + hasButtons = false, + uiDialogButtonPane = $('
    ') + .addClass( + 'ui-dialog-buttonpane ' + + 'ui-widget-content ' + + 'ui-helper-clearfix' + ), + uiButtonSet = $( "
    " ) + .addClass( "ui-dialog-buttonset" ) + .appendTo( uiDialogButtonPane ); + + // if we already have a button pane, remove it + self.uiDialog.find('.ui-dialog-buttonpane').remove(); + + if (typeof buttons === 'object' && buttons !== null) { + $.each(buttons, function() { + return !(hasButtons = true); + }); + } + if (hasButtons) { + $.each(buttons, function(name, props) { + props = $.isFunction( props ) ? + { click: props, text: name } : + props; + var button = $('') + .click(function() { + props.click.apply(self.element[0], arguments); + }) + .appendTo(uiButtonSet); + // can't use .attr( props, true ) with jQuery 1.3.2. + $.each( props, function( key, value ) { + if ( key === "click" ) { + return; + } + if ( key in button ) { + button[ key ]( value ); + } else { + button.attr( key, value ); + } + }); + if ($.fn.button) { + button.button(); + } + }); + uiDialogButtonPane.appendTo(self.uiDialog); + } + }, + + _makeDraggable: function() { + var self = this, + options = self.options, + doc = $(document), + heightBeforeDrag; + + function filteredUi(ui) { + return { + position: ui.position, + offset: ui.offset + }; + } + + self.uiDialog.draggable({ + cancel: '.ui-dialog-content, .ui-dialog-titlebar-close', + handle: '.ui-dialog-titlebar', + containment: 'document', + start: function(event, ui) { + heightBeforeDrag = options.height === "auto" ? "auto" : $(this).height(); + $(this).height($(this).height()).addClass("ui-dialog-dragging"); + self._trigger('dragStart', event, filteredUi(ui)); + }, + drag: function(event, ui) { + self._trigger('drag', event, filteredUi(ui)); + }, + stop: function(event, ui) { + options.position = [ui.position.left - doc.scrollLeft(), + ui.position.top - doc.scrollTop()]; + $(this).removeClass("ui-dialog-dragging").height(heightBeforeDrag); + self._trigger('dragStop', event, filteredUi(ui)); + $.ui.dialog.overlay.resize(); + } + }); + }, + + _makeResizable: function(handles) { + handles = (handles === undefined ? this.options.resizable : handles); + var self = this, + options = self.options, + // .ui-resizable has position: relative defined in the stylesheet + // but dialogs have to use absolute or fixed positioning + position = self.uiDialog.css('position'), + resizeHandles = (typeof handles === 'string' ? + handles : + 'n,e,s,w,se,sw,ne,nw' + ); + + function filteredUi(ui) { + return { + originalPosition: ui.originalPosition, + originalSize: ui.originalSize, + position: ui.position, + size: ui.size + }; + } + + self.uiDialog.resizable({ + cancel: '.ui-dialog-content', + containment: 'document', + alsoResize: self.element, + maxWidth: options.maxWidth, + maxHeight: options.maxHeight, + minWidth: options.minWidth, + minHeight: self._minHeight(), + handles: resizeHandles, + start: function(event, ui) { + $(this).addClass("ui-dialog-resizing"); + self._trigger('resizeStart', event, filteredUi(ui)); + }, + resize: function(event, ui) { + self._trigger('resize', event, filteredUi(ui)); + }, + stop: function(event, ui) { + $(this).removeClass("ui-dialog-resizing"); + options.height = $(this).height(); + options.width = $(this).width(); + self._trigger('resizeStop', event, filteredUi(ui)); + $.ui.dialog.overlay.resize(); + } + }) + .css('position', position) + .find('.ui-resizable-se').addClass('ui-icon ui-icon-grip-diagonal-se'); + }, + + _minHeight: function() { + var options = this.options; + + if (options.height === 'auto') { + return options.minHeight; + } else { + return Math.min(options.minHeight, options.height); + } + }, + + _position: function(position) { + var myAt = [], + offset = [0, 0], + isVisible; + + if (position) { + // deep extending converts arrays to objects in jQuery <= 1.3.2 :-( + // if (typeof position == 'string' || $.isArray(position)) { + // myAt = $.isArray(position) ? position : position.split(' '); + + if (typeof position === 'string' || (typeof position === 'object' && '0' in position)) { + myAt = position.split ? position.split(' ') : [position[0], position[1]]; + if (myAt.length === 1) { + myAt[1] = myAt[0]; + } + + $.each(['left', 'top'], function(i, offsetPosition) { + if (+myAt[i] === myAt[i]) { + offset[i] = myAt[i]; + myAt[i] = offsetPosition; + } + }); + + position = { + my: myAt.join(" "), + at: myAt.join(" "), + offset: offset.join(" ") + }; + } + + position = $.extend({}, $.ui.dialog.prototype.options.position, position); + } else { + position = $.ui.dialog.prototype.options.position; + } + + // need to show the dialog to get the actual offset in the position plugin + isVisible = this.uiDialog.is(':visible'); + if (!isVisible) { + this.uiDialog.show(); + } + this.uiDialog + // workaround for jQuery bug #5781 http://dev.jquery.com/ticket/5781 + .css({ top: 0, left: 0 }) + .position($.extend({ of: window }, position)); + if (!isVisible) { + this.uiDialog.hide(); + } + }, + + _setOptions: function( options ) { + var self = this, + resizableOptions = {}, + resize = false; + + $.each( options, function( key, value ) { + self._setOption( key, value ); + + if ( key in sizeRelatedOptions ) { + resize = true; + } + if ( key in resizableRelatedOptions ) { + resizableOptions[ key ] = value; + } + }); + + if ( resize ) { + this._size(); + } + if ( this.uiDialog.is( ":data(resizable)" ) ) { + this.uiDialog.resizable( "option", resizableOptions ); + } + }, + + _setOption: function(key, value){ + var self = this, + uiDialog = self.uiDialog; + + switch (key) { + //handling of deprecated beforeclose (vs beforeClose) option + //Ticket #4669 http://dev.jqueryui.com/ticket/4669 + //TODO: remove in 1.9pre + case "beforeclose": + key = "beforeClose"; + break; + case "buttons": + self._createButtons(value); + break; + case "closeText": + // ensure that we always pass a string + self.uiDialogTitlebarCloseText.text("" + value); + break; + case "dialogClass": + uiDialog + .removeClass(self.options.dialogClass) + .addClass(uiDialogClasses + value); + break; + case "disabled": + if (value) { + uiDialog.addClass('ui-dialog-disabled'); + } else { + uiDialog.removeClass('ui-dialog-disabled'); + } + break; + case "draggable": + var isDraggable = uiDialog.is( ":data(draggable)" ); + if ( isDraggable && !value ) { + uiDialog.draggable( "destroy" ); + } + + if ( !isDraggable && value ) { + self._makeDraggable(); + } + break; + case "position": + self._position(value); + break; + case "resizable": + // currently resizable, becoming non-resizable + var isResizable = uiDialog.is( ":data(resizable)" ); + if (isResizable && !value) { + uiDialog.resizable('destroy'); + } + + // currently resizable, changing handles + if (isResizable && typeof value === 'string') { + uiDialog.resizable('option', 'handles', value); + } + + // currently non-resizable, becoming resizable + if (!isResizable && value !== false) { + self._makeResizable(value); + } + break; + case "title": + // convert whatever was passed in o a string, for html() to not throw up + $(".ui-dialog-title", self.uiDialogTitlebar).html("" + (value || ' ')); + break; + } + + $.Widget.prototype._setOption.apply(self, arguments); + }, + + _size: function() { + /* If the user has resized the dialog, the .ui-dialog and .ui-dialog-content + * divs will both have width and height set, so we need to reset them + */ + var options = this.options, + nonContentHeight, + minContentHeight, + isVisible = this.uiDialog.is( ":visible" ); + + // reset content sizing + this.element.show().css({ + width: 'auto', + minHeight: 0, + height: 0 + }); + + if (options.minWidth > options.width) { + options.width = options.minWidth; + } + + // reset wrapper sizing + // determine the height of all the non-content elements + nonContentHeight = this.uiDialog.css({ + height: 'auto', + width: options.width + }) + .height(); + minContentHeight = Math.max( 0, options.minHeight - nonContentHeight ); + + if ( options.height === "auto" ) { + // only needed for IE6 support + if ( $.support.minHeight ) { + this.element.css({ + minHeight: minContentHeight, + height: "auto" + }); + } else { + this.uiDialog.show(); + var autoHeight = this.element.css( "height", "auto" ).height(); + if ( !isVisible ) { + this.uiDialog.hide(); + } + this.element.height( Math.max( autoHeight, minContentHeight ) ); + } + } else { + this.element.height( Math.max( options.height - nonContentHeight, 0 ) ); + } + + if (this.uiDialog.is(':data(resizable)')) { + this.uiDialog.resizable('option', 'minHeight', this._minHeight()); + } + } +}); + +$.extend($.ui.dialog, { + version: "1.8.24", + + uuid: 0, + maxZ: 0, + + getTitleId: function($el) { + var id = $el.attr('id'); + if (!id) { + this.uuid += 1; + id = this.uuid; + } + return 'ui-dialog-title-' + id; + }, + + overlay: function(dialog) { + this.$el = $.ui.dialog.overlay.create(dialog); + } +}); + +$.extend($.ui.dialog.overlay, { + instances: [], + // reuse old instances due to IE memory leak with alpha transparency (see #5185) + oldInstances: [], + maxZ: 0, + events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','), + function(event) { return event + '.dialog-overlay'; }).join(' '), + create: function(dialog) { + if (this.instances.length === 0) { + // prevent use of anchors and inputs + // we use a setTimeout in case the overlay is created from an + // event that we're going to be cancelling (see #2804) + setTimeout(function() { + // handle $(el).dialog().dialog('close') (see #4065) + if ($.ui.dialog.overlay.instances.length) { + $(document).bind($.ui.dialog.overlay.events, function(event) { + // stop events if the z-index of the target is < the z-index of the overlay + // we cannot return true when we don't want to cancel the event (#3523) + if ($(event.target).zIndex() < $.ui.dialog.overlay.maxZ) { + return false; + } + }); + } + }, 1); + + // allow closing by pressing the escape key + $(document).bind('keydown.dialog-overlay', function(event) { + if (dialog.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && + event.keyCode === $.ui.keyCode.ESCAPE) { + + dialog.close(event); + event.preventDefault(); + } + }); + + // handle window resize + $(window).bind('resize.dialog-overlay', $.ui.dialog.overlay.resize); + } + + var $el = (this.oldInstances.pop() || $('
    ').addClass('ui-widget-overlay')) + .appendTo(document.body) + .css({ + width: this.width(), + height: this.height() + }); + + if ($.fn.bgiframe) { + $el.bgiframe(); + } + + this.instances.push($el); + return $el; + }, + + destroy: function($el) { + var indexOf = $.inArray($el, this.instances); + if (indexOf != -1){ + this.oldInstances.push(this.instances.splice(indexOf, 1)[0]); + } + + if (this.instances.length === 0) { + $([document, window]).unbind('.dialog-overlay'); + } + + $el.remove(); + + // adjust the maxZ to allow other modal dialogs to continue to work (see #4309) + var maxZ = 0; + $.each(this.instances, function() { + maxZ = Math.max(maxZ, this.css('z-index')); + }); + this.maxZ = maxZ; + }, + + height: function() { + var scrollHeight, + offsetHeight; + // handle IE 6 + if ($.browser.msie && $.browser.version < 7) { + scrollHeight = Math.max( + document.documentElement.scrollHeight, + document.body.scrollHeight + ); + offsetHeight = Math.max( + document.documentElement.offsetHeight, + document.body.offsetHeight + ); + + if (scrollHeight < offsetHeight) { + return $(window).height() + 'px'; + } else { + return scrollHeight + 'px'; + } + // handle "good" browsers + } else { + return $(document).height() + 'px'; + } + }, + + width: function() { + var scrollWidth, + offsetWidth; + // handle IE + if ( $.browser.msie ) { + scrollWidth = Math.max( + document.documentElement.scrollWidth, + document.body.scrollWidth + ); + offsetWidth = Math.max( + document.documentElement.offsetWidth, + document.body.offsetWidth + ); + + if (scrollWidth < offsetWidth) { + return $(window).width() + 'px'; + } else { + return scrollWidth + 'px'; + } + // handle "good" browsers + } else { + return $(document).width() + 'px'; + } + }, + + resize: function() { + /* If the dialog is draggable and the user drags it past the + * right edge of the window, the document becomes wider so we + * need to stretch the overlay. If the user then drags the + * dialog back to the left, the document will become narrower, + * so we need to shrink the overlay to the appropriate size. + * This is handled by shrinking the overlay before setting it + * to the full document size. + */ + var $overlays = $([]); + $.each($.ui.dialog.overlay.instances, function() { + $overlays = $overlays.add(this); + }); + + $overlays.css({ + width: 0, + height: 0 + }).css({ + width: $.ui.dialog.overlay.width(), + height: $.ui.dialog.overlay.height() + }); + } +}); + +$.extend($.ui.dialog.overlay.prototype, { + destroy: function() { + $.ui.dialog.overlay.destroy(this.$el); + } +}); + +}(jQuery)); + +(function( $, undefined ) { + +$.ui = $.ui || {}; + +var horizontalPositions = /left|center|right/, + verticalPositions = /top|center|bottom/, + center = "center", + support = {}, + _position = $.fn.position, + _offset = $.fn.offset; + +$.fn.position = function( options ) { + if ( !options || !options.of ) { + return _position.apply( this, arguments ); + } + + // make a copy, we don't want to modify arguments + options = $.extend( {}, options ); + + var target = $( options.of ), + targetElem = target[0], + collision = ( options.collision || "flip" ).split( " " ), + offset = options.offset ? options.offset.split( " " ) : [ 0, 0 ], + targetWidth, + targetHeight, + basePosition; + + if ( targetElem.nodeType === 9 ) { + targetWidth = target.width(); + targetHeight = target.height(); + basePosition = { top: 0, left: 0 }; + // TODO: use $.isWindow() in 1.9 + } else if ( targetElem.setTimeout ) { + targetWidth = target.width(); + targetHeight = target.height(); + basePosition = { top: target.scrollTop(), left: target.scrollLeft() }; + } else if ( targetElem.preventDefault ) { + // force left top to allow flipping + options.at = "left top"; + targetWidth = targetHeight = 0; + basePosition = { top: options.of.pageY, left: options.of.pageX }; + } else { + targetWidth = target.outerWidth(); + targetHeight = target.outerHeight(); + basePosition = target.offset(); + } + + // force my and at to have valid horizontal and veritcal positions + // if a value is missing or invalid, it will be converted to center + $.each( [ "my", "at" ], function() { + var pos = ( options[this] || "" ).split( " " ); + if ( pos.length === 1) { + pos = horizontalPositions.test( pos[0] ) ? + pos.concat( [center] ) : + verticalPositions.test( pos[0] ) ? + [ center ].concat( pos ) : + [ center, center ]; + } + pos[ 0 ] = horizontalPositions.test( pos[0] ) ? pos[ 0 ] : center; + pos[ 1 ] = verticalPositions.test( pos[1] ) ? pos[ 1 ] : center; + options[ this ] = pos; + }); + + // normalize collision option + if ( collision.length === 1 ) { + collision[ 1 ] = collision[ 0 ]; + } + + // normalize offset option + offset[ 0 ] = parseInt( offset[0], 10 ) || 0; + if ( offset.length === 1 ) { + offset[ 1 ] = offset[ 0 ]; + } + offset[ 1 ] = parseInt( offset[1], 10 ) || 0; + + if ( options.at[0] === "right" ) { + basePosition.left += targetWidth; + } else if ( options.at[0] === center ) { + basePosition.left += targetWidth / 2; + } + + if ( options.at[1] === "bottom" ) { + basePosition.top += targetHeight; + } else if ( options.at[1] === center ) { + basePosition.top += targetHeight / 2; + } + + basePosition.left += offset[ 0 ]; + basePosition.top += offset[ 1 ]; + + return this.each(function() { + var elem = $( this ), + elemWidth = elem.outerWidth(), + elemHeight = elem.outerHeight(), + marginLeft = parseInt( $.curCSS( this, "marginLeft", true ) ) || 0, + marginTop = parseInt( $.curCSS( this, "marginTop", true ) ) || 0, + collisionWidth = elemWidth + marginLeft + + ( parseInt( $.curCSS( this, "marginRight", true ) ) || 0 ), + collisionHeight = elemHeight + marginTop + + ( parseInt( $.curCSS( this, "marginBottom", true ) ) || 0 ), + position = $.extend( {}, basePosition ), + collisionPosition; + + if ( options.my[0] === "right" ) { + position.left -= elemWidth; + } else if ( options.my[0] === center ) { + position.left -= elemWidth / 2; + } + + if ( options.my[1] === "bottom" ) { + position.top -= elemHeight; + } else if ( options.my[1] === center ) { + position.top -= elemHeight / 2; + } + + // prevent fractions if jQuery version doesn't support them (see #5280) + if ( !support.fractions ) { + position.left = Math.round( position.left ); + position.top = Math.round( position.top ); + } + + collisionPosition = { + left: position.left - marginLeft, + top: position.top - marginTop + }; + + $.each( [ "left", "top" ], function( i, dir ) { + if ( $.ui.position[ collision[i] ] ) { + $.ui.position[ collision[i] ][ dir ]( position, { + targetWidth: targetWidth, + targetHeight: targetHeight, + elemWidth: elemWidth, + elemHeight: elemHeight, + collisionPosition: collisionPosition, + collisionWidth: collisionWidth, + collisionHeight: collisionHeight, + offset: offset, + my: options.my, + at: options.at + }); + } + }); + + if ( $.fn.bgiframe ) { + elem.bgiframe(); + } + elem.offset( $.extend( position, { using: options.using } ) ); + }); +}; + +$.ui.position = { + fit: { + left: function( position, data ) { + var win = $( window ), + over = data.collisionPosition.left + data.collisionWidth - win.width() - win.scrollLeft(); + position.left = over > 0 ? position.left - over : Math.max( position.left - data.collisionPosition.left, position.left ); + }, + top: function( position, data ) { + var win = $( window ), + over = data.collisionPosition.top + data.collisionHeight - win.height() - win.scrollTop(); + position.top = over > 0 ? position.top - over : Math.max( position.top - data.collisionPosition.top, position.top ); + } + }, + + flip: { + left: function( position, data ) { + if ( data.at[0] === center ) { + return; + } + var win = $( window ), + over = data.collisionPosition.left + data.collisionWidth - win.width() - win.scrollLeft(), + myOffset = data.my[ 0 ] === "left" ? + -data.elemWidth : + data.my[ 0 ] === "right" ? + data.elemWidth : + 0, + atOffset = data.at[ 0 ] === "left" ? + data.targetWidth : + -data.targetWidth, + offset = -2 * data.offset[ 0 ]; + position.left += data.collisionPosition.left < 0 ? + myOffset + atOffset + offset : + over > 0 ? + myOffset + atOffset + offset : + 0; + }, + top: function( position, data ) { + if ( data.at[1] === center ) { + return; + } + var win = $( window ), + over = data.collisionPosition.top + data.collisionHeight - win.height() - win.scrollTop(), + myOffset = data.my[ 1 ] === "top" ? + -data.elemHeight : + data.my[ 1 ] === "bottom" ? + data.elemHeight : + 0, + atOffset = data.at[ 1 ] === "top" ? + data.targetHeight : + -data.targetHeight, + offset = -2 * data.offset[ 1 ]; + position.top += data.collisionPosition.top < 0 ? + myOffset + atOffset + offset : + over > 0 ? + myOffset + atOffset + offset : + 0; + } + } +}; + +// offset setter from jQuery 1.4 +if ( !$.offset.setOffset ) { + $.offset.setOffset = function( elem, options ) { + // set position first, in-case top/left are set even on static elem + if ( /static/.test( $.curCSS( elem, "position" ) ) ) { + elem.style.position = "relative"; + } + var curElem = $( elem ), + curOffset = curElem.offset(), + curTop = parseInt( $.curCSS( elem, "top", true ), 10 ) || 0, + curLeft = parseInt( $.curCSS( elem, "left", true ), 10) || 0, + props = { + top: (options.top - curOffset.top) + curTop, + left: (options.left - curOffset.left) + curLeft + }; + + if ( 'using' in options ) { + options.using.call( elem, props ); + } else { + curElem.css( props ); + } + }; + + $.fn.offset = function( options ) { + var elem = this[ 0 ]; + if ( !elem || !elem.ownerDocument ) { return null; } + if ( options ) { + if ( $.isFunction( options ) ) { + return this.each(function( i ) { + $( this ).offset( options.call( this, i, $( this ).offset() ) ); + }); + } + return this.each(function() { + $.offset.setOffset( this, options ); + }); + } + return _offset.call( this ); + }; +} + +// jQuery <1.4.3 uses curCSS, in 1.4.3 - 1.7.2 curCSS = css, 1.8+ only has css +if ( !$.curCSS ) { + $.curCSS = $.css; +} + +// fraction support test (older versions of jQuery don't support fractions) +(function () { + var body = document.getElementsByTagName( "body" )[ 0 ], + div = document.createElement( "div" ), + testElement, testElementParent, testElementStyle, offset, offsetTotal; + + //Create a "fake body" for testing based on method used in jQuery.support + testElement = document.createElement( body ? "div" : "body" ); + testElementStyle = { + visibility: "hidden", + width: 0, + height: 0, + border: 0, + margin: 0, + background: "none" + }; + if ( body ) { + $.extend( testElementStyle, { + position: "absolute", + left: "-1000px", + top: "-1000px" + }); + } + for ( var i in testElementStyle ) { + testElement.style[ i ] = testElementStyle[ i ]; + } + testElement.appendChild( div ); + testElementParent = body || document.documentElement; + testElementParent.insertBefore( testElement, testElementParent.firstChild ); + + div.style.cssText = "position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;"; + + offset = $( div ).offset( function( _, offset ) { + return offset; + }).offset(); + + testElement.innerHTML = ""; + testElementParent.removeChild( testElement ); + + offsetTotal = offset.top + offset.left + ( body ? 2000 : 0 ); + support.fractions = offsetTotal > 21 && offsetTotal < 22; +})(); + +}( jQuery )); + +(function( $, undefined ) { + +$.widget( "ui.progressbar", { + options: { + value: 0, + max: 100 + }, + + min: 0, + + _create: function() { + this.element + .addClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" ) + .attr({ + role: "progressbar", + "aria-valuemin": this.min, + "aria-valuemax": this.options.max, + "aria-valuenow": this._value() + }); + + this.valueDiv = $( "
    " ) + .appendTo( this.element ); + + this.oldValue = this._value(); + this._refreshValue(); + }, + + destroy: function() { + this.element + .removeClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" ) + .removeAttr( "role" ) + .removeAttr( "aria-valuemin" ) + .removeAttr( "aria-valuemax" ) + .removeAttr( "aria-valuenow" ); + + this.valueDiv.remove(); + + $.Widget.prototype.destroy.apply( this, arguments ); + }, + + value: function( newValue ) { + if ( newValue === undefined ) { + return this._value(); + } + + this._setOption( "value", newValue ); + return this; + }, + + _setOption: function( key, value ) { + if ( key === "value" ) { + this.options.value = value; + this._refreshValue(); + if ( this._value() === this.options.max ) { + this._trigger( "complete" ); + } + } + + $.Widget.prototype._setOption.apply( this, arguments ); + }, + + _value: function() { + var val = this.options.value; + // normalize invalid value + if ( typeof val !== "number" ) { + val = 0; + } + return Math.min( this.options.max, Math.max( this.min, val ) ); + }, + + _percentage: function() { + return 100 * this._value() / this.options.max; + }, + + _refreshValue: function() { + var value = this.value(); + var percentage = this._percentage(); + + if ( this.oldValue !== value ) { + this.oldValue = value; + this._trigger( "change" ); + } + + this.valueDiv + .toggle( value > this.min ) + .toggleClass( "ui-corner-right", value === this.options.max ) + .width( percentage.toFixed(0) + "%" ); + this.element.attr( "aria-valuenow", value ); + } +}); + +$.extend( $.ui.progressbar, { + version: "1.8.24" +}); + +})( jQuery ); + +(function( $, undefined ) { + +// number of pages in a slider +// (how many times can you page up/down to go through the whole range) +var numPages = 5; + +$.widget( "ui.slider", $.ui.mouse, { + + widgetEventPrefix: "slide", + + options: { + animate: false, + distance: 0, + max: 100, + min: 0, + orientation: "horizontal", + range: false, + step: 1, + value: 0, + values: null + }, + + _create: function() { + var self = this, + o = this.options, + existingHandles = this.element.find( ".ui-slider-handle" ).addClass( "ui-state-default ui-corner-all" ), + handle = "", + handleCount = ( o.values && o.values.length ) || 1, + handles = []; + + this._keySliding = false; + this._mouseSliding = false; + this._animateOff = true; + this._handleIndex = null; + this._detectOrientation(); + this._mouseInit(); + + this.element + .addClass( "ui-slider" + + " ui-slider-" + this.orientation + + " ui-widget" + + " ui-widget-content" + + " ui-corner-all" + + ( o.disabled ? " ui-slider-disabled ui-disabled" : "" ) ); + + this.range = $([]); + + if ( o.range ) { + if ( o.range === true ) { + if ( !o.values ) { + o.values = [ this._valueMin(), this._valueMin() ]; + } + if ( o.values.length && o.values.length !== 2 ) { + o.values = [ o.values[0], o.values[0] ]; + } + } + + this.range = $( "
    " ) + .appendTo( this.element ) + .addClass( "ui-slider-range" + + // note: this isn't the most fittingly semantic framework class for this element, + // but worked best visually with a variety of themes + " ui-widget-header" + + ( ( o.range === "min" || o.range === "max" ) ? " ui-slider-range-" + o.range : "" ) ); + } + + for ( var i = existingHandles.length; i < handleCount; i += 1 ) { + handles.push( handle ); + } + + this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( self.element ) ); + + this.handle = this.handles.eq( 0 ); + + this.handles.add( this.range ).filter( "a" ) + .click(function( event ) { + event.preventDefault(); + }) + .hover(function() { + if ( !o.disabled ) { + $( this ).addClass( "ui-state-hover" ); + } + }, function() { + $( this ).removeClass( "ui-state-hover" ); + }) + .focus(function() { + if ( !o.disabled ) { + $( ".ui-slider .ui-state-focus" ).removeClass( "ui-state-focus" ); + $( this ).addClass( "ui-state-focus" ); + } else { + $( this ).blur(); + } + }) + .blur(function() { + $( this ).removeClass( "ui-state-focus" ); + }); + + this.handles.each(function( i ) { + $( this ).data( "index.ui-slider-handle", i ); + }); + + this.handles + .keydown(function( event ) { + var index = $( this ).data( "index.ui-slider-handle" ), + allowed, + curVal, + newVal, + step; + + if ( self.options.disabled ) { + return; + } + + switch ( event.keyCode ) { + case $.ui.keyCode.HOME: + case $.ui.keyCode.END: + case $.ui.keyCode.PAGE_UP: + case $.ui.keyCode.PAGE_DOWN: + case $.ui.keyCode.UP: + case $.ui.keyCode.RIGHT: + case $.ui.keyCode.DOWN: + case $.ui.keyCode.LEFT: + event.preventDefault(); + if ( !self._keySliding ) { + self._keySliding = true; + $( this ).addClass( "ui-state-active" ); + allowed = self._start( event, index ); + if ( allowed === false ) { + return; + } + } + break; + } + + step = self.options.step; + if ( self.options.values && self.options.values.length ) { + curVal = newVal = self.values( index ); + } else { + curVal = newVal = self.value(); + } + + switch ( event.keyCode ) { + case $.ui.keyCode.HOME: + newVal = self._valueMin(); + break; + case $.ui.keyCode.END: + newVal = self._valueMax(); + break; + case $.ui.keyCode.PAGE_UP: + newVal = self._trimAlignValue( curVal + ( (self._valueMax() - self._valueMin()) / numPages ) ); + break; + case $.ui.keyCode.PAGE_DOWN: + newVal = self._trimAlignValue( curVal - ( (self._valueMax() - self._valueMin()) / numPages ) ); + break; + case $.ui.keyCode.UP: + case $.ui.keyCode.RIGHT: + if ( curVal === self._valueMax() ) { + return; + } + newVal = self._trimAlignValue( curVal + step ); + break; + case $.ui.keyCode.DOWN: + case $.ui.keyCode.LEFT: + if ( curVal === self._valueMin() ) { + return; + } + newVal = self._trimAlignValue( curVal - step ); + break; + } + + self._slide( event, index, newVal ); + }) + .keyup(function( event ) { + var index = $( this ).data( "index.ui-slider-handle" ); + + if ( self._keySliding ) { + self._keySliding = false; + self._stop( event, index ); + self._change( event, index ); + $( this ).removeClass( "ui-state-active" ); + } + + }); + + this._refreshValue(); + + this._animateOff = false; + }, + + destroy: function() { + this.handles.remove(); + this.range.remove(); + + this.element + .removeClass( "ui-slider" + + " ui-slider-horizontal" + + " ui-slider-vertical" + + " ui-slider-disabled" + + " ui-widget" + + " ui-widget-content" + + " ui-corner-all" ) + .removeData( "slider" ) + .unbind( ".slider" ); + + this._mouseDestroy(); + + return this; + }, + + _mouseCapture: function( event ) { + var o = this.options, + position, + normValue, + distance, + closestHandle, + self, + index, + allowed, + offset, + mouseOverHandle; + + if ( o.disabled ) { + return false; + } + + this.elementSize = { + width: this.element.outerWidth(), + height: this.element.outerHeight() + }; + this.elementOffset = this.element.offset(); + + position = { x: event.pageX, y: event.pageY }; + normValue = this._normValueFromMouse( position ); + distance = this._valueMax() - this._valueMin() + 1; + self = this; + this.handles.each(function( i ) { + var thisDistance = Math.abs( normValue - self.values(i) ); + if ( distance > thisDistance ) { + distance = thisDistance; + closestHandle = $( this ); + index = i; + } + }); + + // workaround for bug #3736 (if both handles of a range are at 0, + // the first is always used as the one with least distance, + // and moving it is obviously prevented by preventing negative ranges) + if( o.range === true && this.values(1) === o.min ) { + index += 1; + closestHandle = $( this.handles[index] ); + } + + allowed = this._start( event, index ); + if ( allowed === false ) { + return false; + } + this._mouseSliding = true; + + self._handleIndex = index; + + closestHandle + .addClass( "ui-state-active" ) + .focus(); + + offset = closestHandle.offset(); + mouseOverHandle = !$( event.target ).parents().andSelf().is( ".ui-slider-handle" ); + this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : { + left: event.pageX - offset.left - ( closestHandle.width() / 2 ), + top: event.pageY - offset.top - + ( closestHandle.height() / 2 ) - + ( parseInt( closestHandle.css("borderTopWidth"), 10 ) || 0 ) - + ( parseInt( closestHandle.css("borderBottomWidth"), 10 ) || 0) + + ( parseInt( closestHandle.css("marginTop"), 10 ) || 0) + }; + + if ( !this.handles.hasClass( "ui-state-hover" ) ) { + this._slide( event, index, normValue ); + } + this._animateOff = true; + return true; + }, + + _mouseStart: function( event ) { + return true; + }, + + _mouseDrag: function( event ) { + var position = { x: event.pageX, y: event.pageY }, + normValue = this._normValueFromMouse( position ); + + this._slide( event, this._handleIndex, normValue ); + + return false; + }, + + _mouseStop: function( event ) { + this.handles.removeClass( "ui-state-active" ); + this._mouseSliding = false; + + this._stop( event, this._handleIndex ); + this._change( event, this._handleIndex ); + + this._handleIndex = null; + this._clickOffset = null; + this._animateOff = false; + + return false; + }, + + _detectOrientation: function() { + this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal"; + }, + + _normValueFromMouse: function( position ) { + var pixelTotal, + pixelMouse, + percentMouse, + valueTotal, + valueMouse; + + if ( this.orientation === "horizontal" ) { + pixelTotal = this.elementSize.width; + pixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 ); + } else { + pixelTotal = this.elementSize.height; + pixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 ); + } + + percentMouse = ( pixelMouse / pixelTotal ); + if ( percentMouse > 1 ) { + percentMouse = 1; + } + if ( percentMouse < 0 ) { + percentMouse = 0; + } + if ( this.orientation === "vertical" ) { + percentMouse = 1 - percentMouse; + } + + valueTotal = this._valueMax() - this._valueMin(); + valueMouse = this._valueMin() + percentMouse * valueTotal; + + return this._trimAlignValue( valueMouse ); + }, + + _start: function( event, index ) { + var uiHash = { + handle: this.handles[ index ], + value: this.value() + }; + if ( this.options.values && this.options.values.length ) { + uiHash.value = this.values( index ); + uiHash.values = this.values(); + } + return this._trigger( "start", event, uiHash ); + }, + + _slide: function( event, index, newVal ) { + var otherVal, + newValues, + allowed; + + if ( this.options.values && this.options.values.length ) { + otherVal = this.values( index ? 0 : 1 ); + + if ( ( this.options.values.length === 2 && this.options.range === true ) && + ( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) ) + ) { + newVal = otherVal; + } + + if ( newVal !== this.values( index ) ) { + newValues = this.values(); + newValues[ index ] = newVal; + // A slide can be canceled by returning false from the slide callback + allowed = this._trigger( "slide", event, { + handle: this.handles[ index ], + value: newVal, + values: newValues + } ); + otherVal = this.values( index ? 0 : 1 ); + if ( allowed !== false ) { + this.values( index, newVal, true ); + } + } + } else { + if ( newVal !== this.value() ) { + // A slide can be canceled by returning false from the slide callback + allowed = this._trigger( "slide", event, { + handle: this.handles[ index ], + value: newVal + } ); + if ( allowed !== false ) { + this.value( newVal ); + } + } + } + }, + + _stop: function( event, index ) { + var uiHash = { + handle: this.handles[ index ], + value: this.value() + }; + if ( this.options.values && this.options.values.length ) { + uiHash.value = this.values( index ); + uiHash.values = this.values(); + } + + this._trigger( "stop", event, uiHash ); + }, + + _change: function( event, index ) { + if ( !this._keySliding && !this._mouseSliding ) { + var uiHash = { + handle: this.handles[ index ], + value: this.value() + }; + if ( this.options.values && this.options.values.length ) { + uiHash.value = this.values( index ); + uiHash.values = this.values(); + } + + this._trigger( "change", event, uiHash ); + } + }, + + value: function( newValue ) { + if ( arguments.length ) { + this.options.value = this._trimAlignValue( newValue ); + this._refreshValue(); + this._change( null, 0 ); + return; + } + + return this._value(); + }, + + values: function( index, newValue ) { + var vals, + newValues, + i; + + if ( arguments.length > 1 ) { + this.options.values[ index ] = this._trimAlignValue( newValue ); + this._refreshValue(); + this._change( null, index ); + return; + } + + if ( arguments.length ) { + if ( $.isArray( arguments[ 0 ] ) ) { + vals = this.options.values; + newValues = arguments[ 0 ]; + for ( i = 0; i < vals.length; i += 1 ) { + vals[ i ] = this._trimAlignValue( newValues[ i ] ); + this._change( null, i ); + } + this._refreshValue(); + } else { + if ( this.options.values && this.options.values.length ) { + return this._values( index ); + } else { + return this.value(); + } + } + } else { + return this._values(); + } + }, + + _setOption: function( key, value ) { + var i, + valsLength = 0; + + if ( $.isArray( this.options.values ) ) { + valsLength = this.options.values.length; + } + + $.Widget.prototype._setOption.apply( this, arguments ); + + switch ( key ) { + case "disabled": + if ( value ) { + this.handles.filter( ".ui-state-focus" ).blur(); + this.handles.removeClass( "ui-state-hover" ); + this.handles.propAttr( "disabled", true ); + this.element.addClass( "ui-disabled" ); + } else { + this.handles.propAttr( "disabled", false ); + this.element.removeClass( "ui-disabled" ); + } + break; + case "orientation": + this._detectOrientation(); + this.element + .removeClass( "ui-slider-horizontal ui-slider-vertical" ) + .addClass( "ui-slider-" + this.orientation ); + this._refreshValue(); + break; + case "value": + this._animateOff = true; + this._refreshValue(); + this._change( null, 0 ); + this._animateOff = false; + break; + case "values": + this._animateOff = true; + this._refreshValue(); + for ( i = 0; i < valsLength; i += 1 ) { + this._change( null, i ); + } + this._animateOff = false; + break; + } + }, + + //internal value getter + // _value() returns value trimmed by min and max, aligned by step + _value: function() { + var val = this.options.value; + val = this._trimAlignValue( val ); + + return val; + }, + + //internal values getter + // _values() returns array of values trimmed by min and max, aligned by step + // _values( index ) returns single value trimmed by min and max, aligned by step + _values: function( index ) { + var val, + vals, + i; + + if ( arguments.length ) { + val = this.options.values[ index ]; + val = this._trimAlignValue( val ); + + return val; + } else { + // .slice() creates a copy of the array + // this copy gets trimmed by min and max and then returned + vals = this.options.values.slice(); + for ( i = 0; i < vals.length; i+= 1) { + vals[ i ] = this._trimAlignValue( vals[ i ] ); + } + + return vals; + } + }, + + // returns the step-aligned value that val is closest to, between (inclusive) min and max + _trimAlignValue: function( val ) { + if ( val <= this._valueMin() ) { + return this._valueMin(); + } + if ( val >= this._valueMax() ) { + return this._valueMax(); + } + var step = ( this.options.step > 0 ) ? this.options.step : 1, + valModStep = (val - this._valueMin()) % step, + alignValue = val - valModStep; + + if ( Math.abs(valModStep) * 2 >= step ) { + alignValue += ( valModStep > 0 ) ? step : ( -step ); + } + + // Since JavaScript has problems with large floats, round + // the final value to 5 digits after the decimal point (see #4124) + return parseFloat( alignValue.toFixed(5) ); + }, + + _valueMin: function() { + return this.options.min; + }, + + _valueMax: function() { + return this.options.max; + }, + + _refreshValue: function() { + var oRange = this.options.range, + o = this.options, + self = this, + animate = ( !this._animateOff ) ? o.animate : false, + valPercent, + _set = {}, + lastValPercent, + value, + valueMin, + valueMax; + + if ( this.options.values && this.options.values.length ) { + this.handles.each(function( i, j ) { + valPercent = ( self.values(i) - self._valueMin() ) / ( self._valueMax() - self._valueMin() ) * 100; + _set[ self.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%"; + $( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate ); + if ( self.options.range === true ) { + if ( self.orientation === "horizontal" ) { + if ( i === 0 ) { + self.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { left: valPercent + "%" }, o.animate ); + } + if ( i === 1 ) { + self.range[ animate ? "animate" : "css" ]( { width: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } ); + } + } else { + if ( i === 0 ) { + self.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { bottom: ( valPercent ) + "%" }, o.animate ); + } + if ( i === 1 ) { + self.range[ animate ? "animate" : "css" ]( { height: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } ); + } + } + } + lastValPercent = valPercent; + }); + } else { + value = this.value(); + valueMin = this._valueMin(); + valueMax = this._valueMax(); + valPercent = ( valueMax !== valueMin ) ? + ( value - valueMin ) / ( valueMax - valueMin ) * 100 : + 0; + _set[ self.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%"; + this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate ); + + if ( oRange === "min" && this.orientation === "horizontal" ) { + this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { width: valPercent + "%" }, o.animate ); + } + if ( oRange === "max" && this.orientation === "horizontal" ) { + this.range[ animate ? "animate" : "css" ]( { width: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } ); + } + if ( oRange === "min" && this.orientation === "vertical" ) { + this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { height: valPercent + "%" }, o.animate ); + } + if ( oRange === "max" && this.orientation === "vertical" ) { + this.range[ animate ? "animate" : "css" ]( { height: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } ); + } + } + } + +}); + +$.extend( $.ui.slider, { + version: "1.8.24" +}); + +}(jQuery)); + +(function( $, undefined ) { + +var tabId = 0, + listId = 0; + +function getNextTabId() { + return ++tabId; +} + +function getNextListId() { + return ++listId; +} + +$.widget( "ui.tabs", { + options: { + add: null, + ajaxOptions: null, + cache: false, + cookie: null, // e.g. { expires: 7, path: '/', domain: 'jquery.com', secure: true } + collapsible: false, + disable: null, + disabled: [], + enable: null, + event: "click", + fx: null, // e.g. { height: 'toggle', opacity: 'toggle', duration: 200 } + idPrefix: "ui-tabs-", + load: null, + panelTemplate: "
    ", + remove: null, + select: null, + show: null, + spinner: "Loading…", + tabTemplate: "
  • #{label}
  • " + }, + + _create: function() { + this._tabify( true ); + }, + + _setOption: function( key, value ) { + if ( key == "selected" ) { + if (this.options.collapsible && value == this.options.selected ) { + return; + } + this.select( value ); + } else { + this.options[ key ] = value; + this._tabify(); + } + }, + + _tabId: function( a ) { + return a.title && a.title.replace( /\s/g, "_" ).replace( /[^\w\u00c0-\uFFFF-]/g, "" ) || + this.options.idPrefix + getNextTabId(); + }, + + _sanitizeSelector: function( hash ) { + // we need this because an id may contain a ":" + return hash.replace( /:/g, "\\:" ); + }, + + _cookie: function() { + var cookie = this.cookie || + ( this.cookie = this.options.cookie.name || "ui-tabs-" + getNextListId() ); + return $.cookie.apply( null, [ cookie ].concat( $.makeArray( arguments ) ) ); + }, + + _ui: function( tab, panel ) { + return { + tab: tab, + panel: panel, + index: this.anchors.index( tab ) + }; + }, + + _cleanup: function() { + // restore all former loading tabs labels + this.lis.filter( ".ui-state-processing" ) + .removeClass( "ui-state-processing" ) + .find( "span:data(label.tabs)" ) + .each(function() { + var el = $( this ); + el.html( el.data( "label.tabs" ) ).removeData( "label.tabs" ); + }); + }, + + _tabify: function( init ) { + var self = this, + o = this.options, + fragmentId = /^#.+/; // Safari 2 reports '#' for an empty hash + + this.list = this.element.find( "ol,ul" ).eq( 0 ); + this.lis = $( " > li:has(a[href])", this.list ); + this.anchors = this.lis.map(function() { + return $( "a", this )[ 0 ]; + }); + this.panels = $( [] ); + + this.anchors.each(function( i, a ) { + var href = $( a ).attr( "href" ); + // For dynamically created HTML that contains a hash as href IE < 8 expands + // such href to the full page url with hash and then misinterprets tab as ajax. + // Same consideration applies for an added tab with a fragment identifier + // since a[href=#fragment-identifier] does unexpectedly not match. + // Thus normalize href attribute... + var hrefBase = href.split( "#" )[ 0 ], + baseEl; + if ( hrefBase && ( hrefBase === location.toString().split( "#" )[ 0 ] || + ( baseEl = $( "base" )[ 0 ]) && hrefBase === baseEl.href ) ) { + href = a.hash; + a.href = href; + } + + // inline tab + if ( fragmentId.test( href ) ) { + self.panels = self.panels.add( self.element.find( self._sanitizeSelector( href ) ) ); + // remote tab + // prevent loading the page itself if href is just "#" + } else if ( href && href !== "#" ) { + // required for restore on destroy + $.data( a, "href.tabs", href ); + + // TODO until #3808 is fixed strip fragment identifier from url + // (IE fails to load from such url) + $.data( a, "load.tabs", href.replace( /#.*$/, "" ) ); + + var id = self._tabId( a ); + a.href = "#" + id; + var $panel = self.element.find( "#" + id ); + if ( !$panel.length ) { + $panel = $( o.panelTemplate ) + .attr( "id", id ) + .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ) + .insertAfter( self.panels[ i - 1 ] || self.list ); + $panel.data( "destroy.tabs", true ); + } + self.panels = self.panels.add( $panel ); + // invalid tab href + } else { + o.disabled.push( i ); + } + }); + + // initialization from scratch + if ( init ) { + // attach necessary classes for styling + this.element.addClass( "ui-tabs ui-widget ui-widget-content ui-corner-all" ); + this.list.addClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" ); + this.lis.addClass( "ui-state-default ui-corner-top" ); + this.panels.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" ); + + // Selected tab + // use "selected" option or try to retrieve: + // 1. from fragment identifier in url + // 2. from cookie + // 3. from selected class attribute on
  • + if ( o.selected === undefined ) { + if ( location.hash ) { + this.anchors.each(function( i, a ) { + if ( a.hash == location.hash ) { + o.selected = i; + return false; + } + }); + } + if ( typeof o.selected !== "number" && o.cookie ) { + o.selected = parseInt( self._cookie(), 10 ); + } + if ( typeof o.selected !== "number" && this.lis.filter( ".ui-tabs-selected" ).length ) { + o.selected = this.lis.index( this.lis.filter( ".ui-tabs-selected" ) ); + } + o.selected = o.selected || ( this.lis.length ? 0 : -1 ); + } else if ( o.selected === null ) { // usage of null is deprecated, TODO remove in next release + o.selected = -1; + } + + // sanity check - default to first tab... + o.selected = ( ( o.selected >= 0 && this.anchors[ o.selected ] ) || o.selected < 0 ) + ? o.selected + : 0; + + // Take disabling tabs via class attribute from HTML + // into account and update option properly. + // A selected tab cannot become disabled. + o.disabled = $.unique( o.disabled.concat( + $.map( this.lis.filter( ".ui-state-disabled" ), function( n, i ) { + return self.lis.index( n ); + }) + ) ).sort(); + + if ( $.inArray( o.selected, o.disabled ) != -1 ) { + o.disabled.splice( $.inArray( o.selected, o.disabled ), 1 ); + } + + // highlight selected tab + this.panels.addClass( "ui-tabs-hide" ); + this.lis.removeClass( "ui-tabs-selected ui-state-active" ); + // check for length avoids error when initializing empty list + if ( o.selected >= 0 && this.anchors.length ) { + self.element.find( self._sanitizeSelector( self.anchors[ o.selected ].hash ) ).removeClass( "ui-tabs-hide" ); + this.lis.eq( o.selected ).addClass( "ui-tabs-selected ui-state-active" ); + + // seems to be expected behavior that the show callback is fired + self.element.queue( "tabs", function() { + self._trigger( "show", null, + self._ui( self.anchors[ o.selected ], self.element.find( self._sanitizeSelector( self.anchors[ o.selected ].hash ) )[ 0 ] ) ); + }); + + this.load( o.selected ); + } + + // clean up to avoid memory leaks in certain versions of IE 6 + // TODO: namespace this event + $( window ).bind( "unload", function() { + self.lis.add( self.anchors ).unbind( ".tabs" ); + self.lis = self.anchors = self.panels = null; + }); + // update selected after add/remove + } else { + o.selected = this.lis.index( this.lis.filter( ".ui-tabs-selected" ) ); + } + + // update collapsible + // TODO: use .toggleClass() + this.element[ o.collapsible ? "addClass" : "removeClass" ]( "ui-tabs-collapsible" ); + + // set or update cookie after init and add/remove respectively + if ( o.cookie ) { + this._cookie( o.selected, o.cookie ); + } + + // disable tabs + for ( var i = 0, li; ( li = this.lis[ i ] ); i++ ) { + $( li )[ $.inArray( i, o.disabled ) != -1 && + // TODO: use .toggleClass() + !$( li ).hasClass( "ui-tabs-selected" ) ? "addClass" : "removeClass" ]( "ui-state-disabled" ); + } + + // reset cache if switching from cached to not cached + if ( o.cache === false ) { + this.anchors.removeData( "cache.tabs" ); + } + + // remove all handlers before, tabify may run on existing tabs after add or option change + this.lis.add( this.anchors ).unbind( ".tabs" ); + + if ( o.event !== "mouseover" ) { + var addState = function( state, el ) { + if ( el.is( ":not(.ui-state-disabled)" ) ) { + el.addClass( "ui-state-" + state ); + } + }; + var removeState = function( state, el ) { + el.removeClass( "ui-state-" + state ); + }; + this.lis.bind( "mouseover.tabs" , function() { + addState( "hover", $( this ) ); + }); + this.lis.bind( "mouseout.tabs", function() { + removeState( "hover", $( this ) ); + }); + this.anchors.bind( "focus.tabs", function() { + addState( "focus", $( this ).closest( "li" ) ); + }); + this.anchors.bind( "blur.tabs", function() { + removeState( "focus", $( this ).closest( "li" ) ); + }); + } + + // set up animations + var hideFx, showFx; + if ( o.fx ) { + if ( $.isArray( o.fx ) ) { + hideFx = o.fx[ 0 ]; + showFx = o.fx[ 1 ]; + } else { + hideFx = showFx = o.fx; + } + } + + // Reset certain styles left over from animation + // and prevent IE's ClearType bug... + function resetStyle( $el, fx ) { + $el.css( "display", "" ); + if ( !$.support.opacity && fx.opacity ) { + $el[ 0 ].style.removeAttribute( "filter" ); + } + } + + // Show a tab... + var showTab = showFx + ? function( clicked, $show ) { + $( clicked ).closest( "li" ).addClass( "ui-tabs-selected ui-state-active" ); + $show.hide().removeClass( "ui-tabs-hide" ) // avoid flicker that way + .animate( showFx, showFx.duration || "normal", function() { + resetStyle( $show, showFx ); + self._trigger( "show", null, self._ui( clicked, $show[ 0 ] ) ); + }); + } + : function( clicked, $show ) { + $( clicked ).closest( "li" ).addClass( "ui-tabs-selected ui-state-active" ); + $show.removeClass( "ui-tabs-hide" ); + self._trigger( "show", null, self._ui( clicked, $show[ 0 ] ) ); + }; + + // Hide a tab, $show is optional... + var hideTab = hideFx + ? function( clicked, $hide ) { + $hide.animate( hideFx, hideFx.duration || "normal", function() { + self.lis.removeClass( "ui-tabs-selected ui-state-active" ); + $hide.addClass( "ui-tabs-hide" ); + resetStyle( $hide, hideFx ); + self.element.dequeue( "tabs" ); + }); + } + : function( clicked, $hide, $show ) { + self.lis.removeClass( "ui-tabs-selected ui-state-active" ); + $hide.addClass( "ui-tabs-hide" ); + self.element.dequeue( "tabs" ); + }; + + // attach tab event handler, unbind to avoid duplicates from former tabifying... + this.anchors.bind( o.event + ".tabs", function() { + var el = this, + $li = $(el).closest( "li" ), + $hide = self.panels.filter( ":not(.ui-tabs-hide)" ), + $show = self.element.find( self._sanitizeSelector( el.hash ) ); + + // If tab is already selected and not collapsible or tab disabled or + // or is already loading or click callback returns false stop here. + // Check if click handler returns false last so that it is not executed + // for a disabled or loading tab! + if ( ( $li.hasClass( "ui-tabs-selected" ) && !o.collapsible) || + $li.hasClass( "ui-state-disabled" ) || + $li.hasClass( "ui-state-processing" ) || + self.panels.filter( ":animated" ).length || + self._trigger( "select", null, self._ui( this, $show[ 0 ] ) ) === false ) { + this.blur(); + return false; + } + + o.selected = self.anchors.index( this ); + + self.abort(); + + // if tab may be closed + if ( o.collapsible ) { + if ( $li.hasClass( "ui-tabs-selected" ) ) { + o.selected = -1; + + if ( o.cookie ) { + self._cookie( o.selected, o.cookie ); + } + + self.element.queue( "tabs", function() { + hideTab( el, $hide ); + }).dequeue( "tabs" ); + + this.blur(); + return false; + } else if ( !$hide.length ) { + if ( o.cookie ) { + self._cookie( o.selected, o.cookie ); + } + + self.element.queue( "tabs", function() { + showTab( el, $show ); + }); + + // TODO make passing in node possible, see also http://dev.jqueryui.com/ticket/3171 + self.load( self.anchors.index( this ) ); + + this.blur(); + return false; + } + } + + if ( o.cookie ) { + self._cookie( o.selected, o.cookie ); + } + + // show new tab + if ( $show.length ) { + if ( $hide.length ) { + self.element.queue( "tabs", function() { + hideTab( el, $hide ); + }); + } + self.element.queue( "tabs", function() { + showTab( el, $show ); + }); + + self.load( self.anchors.index( this ) ); + } else { + throw "jQuery UI Tabs: Mismatching fragment identifier."; + } + + // Prevent IE from keeping other link focussed when using the back button + // and remove dotted border from clicked link. This is controlled via CSS + // in modern browsers; blur() removes focus from address bar in Firefox + // which can become a usability and annoying problem with tabs('rotate'). + if ( $.browser.msie ) { + this.blur(); + } + }); + + // disable click in any case + this.anchors.bind( "click.tabs", function(){ + return false; + }); + }, + + _getIndex: function( index ) { + // meta-function to give users option to provide a href string instead of a numerical index. + // also sanitizes numerical indexes to valid values. + if ( typeof index == "string" ) { + index = this.anchors.index( this.anchors.filter( "[href$='" + index + "']" ) ); + } + + return index; + }, + + destroy: function() { + var o = this.options; + + this.abort(); + + this.element + .unbind( ".tabs" ) + .removeClass( "ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible" ) + .removeData( "tabs" ); + + this.list.removeClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" ); + + this.anchors.each(function() { + var href = $.data( this, "href.tabs" ); + if ( href ) { + this.href = href; + } + var $this = $( this ).unbind( ".tabs" ); + $.each( [ "href", "load", "cache" ], function( i, prefix ) { + $this.removeData( prefix + ".tabs" ); + }); + }); + + this.lis.unbind( ".tabs" ).add( this.panels ).each(function() { + if ( $.data( this, "destroy.tabs" ) ) { + $( this ).remove(); + } else { + $( this ).removeClass([ + "ui-state-default", + "ui-corner-top", + "ui-tabs-selected", + "ui-state-active", + "ui-state-hover", + "ui-state-focus", + "ui-state-disabled", + "ui-tabs-panel", + "ui-widget-content", + "ui-corner-bottom", + "ui-tabs-hide" + ].join( " " ) ); + } + }); + + if ( o.cookie ) { + this._cookie( null, o.cookie ); + } + + return this; + }, + + add: function( url, label, index ) { + if ( index === undefined ) { + index = this.anchors.length; + } + + var self = this, + o = this.options, + $li = $( o.tabTemplate.replace( /#\{href\}/g, url ).replace( /#\{label\}/g, label ) ), + id = !url.indexOf( "#" ) ? url.replace( "#", "" ) : this._tabId( $( "a", $li )[ 0 ] ); + + $li.addClass( "ui-state-default ui-corner-top" ).data( "destroy.tabs", true ); + + // try to find an existing element before creating a new one + var $panel = self.element.find( "#" + id ); + if ( !$panel.length ) { + $panel = $( o.panelTemplate ) + .attr( "id", id ) + .data( "destroy.tabs", true ); + } + $panel.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" ); + + if ( index >= this.lis.length ) { + $li.appendTo( this.list ); + $panel.appendTo( this.list[ 0 ].parentNode ); + } else { + $li.insertBefore( this.lis[ index ] ); + $panel.insertBefore( this.panels[ index ] ); + } + + o.disabled = $.map( o.disabled, function( n, i ) { + return n >= index ? ++n : n; + }); + + this._tabify(); + + if ( this.anchors.length == 1 ) { + o.selected = 0; + $li.addClass( "ui-tabs-selected ui-state-active" ); + $panel.removeClass( "ui-tabs-hide" ); + this.element.queue( "tabs", function() { + self._trigger( "show", null, self._ui( self.anchors[ 0 ], self.panels[ 0 ] ) ); + }); + + this.load( 0 ); + } + + this._trigger( "add", null, this._ui( this.anchors[ index ], this.panels[ index ] ) ); + return this; + }, + + remove: function( index ) { + index = this._getIndex( index ); + var o = this.options, + $li = this.lis.eq( index ).remove(), + $panel = this.panels.eq( index ).remove(); + + // If selected tab was removed focus tab to the right or + // in case the last tab was removed the tab to the left. + if ( $li.hasClass( "ui-tabs-selected" ) && this.anchors.length > 1) { + this.select( index + ( index + 1 < this.anchors.length ? 1 : -1 ) ); + } + + o.disabled = $.map( + $.grep( o.disabled, function(n, i) { + return n != index; + }), + function( n, i ) { + return n >= index ? --n : n; + }); + + this._tabify(); + + this._trigger( "remove", null, this._ui( $li.find( "a" )[ 0 ], $panel[ 0 ] ) ); + return this; + }, + + enable: function( index ) { + index = this._getIndex( index ); + var o = this.options; + if ( $.inArray( index, o.disabled ) == -1 ) { + return; + } + + this.lis.eq( index ).removeClass( "ui-state-disabled" ); + o.disabled = $.grep( o.disabled, function( n, i ) { + return n != index; + }); + + this._trigger( "enable", null, this._ui( this.anchors[ index ], this.panels[ index ] ) ); + return this; + }, + + disable: function( index ) { + index = this._getIndex( index ); + var self = this, o = this.options; + // cannot disable already selected tab + if ( index != o.selected ) { + this.lis.eq( index ).addClass( "ui-state-disabled" ); + + o.disabled.push( index ); + o.disabled.sort(); + + this._trigger( "disable", null, this._ui( this.anchors[ index ], this.panels[ index ] ) ); + } + + return this; + }, + + select: function( index ) { + index = this._getIndex( index ); + if ( index == -1 ) { + if ( this.options.collapsible && this.options.selected != -1 ) { + index = this.options.selected; + } else { + return this; + } + } + this.anchors.eq( index ).trigger( this.options.event + ".tabs" ); + return this; + }, + + load: function( index ) { + index = this._getIndex( index ); + var self = this, + o = this.options, + a = this.anchors.eq( index )[ 0 ], + url = $.data( a, "load.tabs" ); + + this.abort(); + + // not remote or from cache + if ( !url || this.element.queue( "tabs" ).length !== 0 && $.data( a, "cache.tabs" ) ) { + this.element.dequeue( "tabs" ); + return; + } + + // load remote from here on + this.lis.eq( index ).addClass( "ui-state-processing" ); + + if ( o.spinner ) { + var span = $( "span", a ); + span.data( "label.tabs", span.html() ).html( o.spinner ); + } + + this.xhr = $.ajax( $.extend( {}, o.ajaxOptions, { + url: url, + success: function( r, s ) { + self.element.find( self._sanitizeSelector( a.hash ) ).html( r ); + + // take care of tab labels + self._cleanup(); + + if ( o.cache ) { + $.data( a, "cache.tabs", true ); + } + + self._trigger( "load", null, self._ui( self.anchors[ index ], self.panels[ index ] ) ); + try { + o.ajaxOptions.success( r, s ); + } + catch ( e ) {} + }, + error: function( xhr, s, e ) { + // take care of tab labels + self._cleanup(); + + self._trigger( "load", null, self._ui( self.anchors[ index ], self.panels[ index ] ) ); + try { + // Passing index avoid a race condition when this method is + // called after the user has selected another tab. + // Pass the anchor that initiated this request allows + // loadError to manipulate the tab content panel via $(a.hash) + o.ajaxOptions.error( xhr, s, index, a ); + } + catch ( e ) {} + } + } ) ); + + // last, so that load event is fired before show... + self.element.dequeue( "tabs" ); + + return this; + }, + + abort: function() { + // stop possibly running animations + this.element.queue( [] ); + this.panels.stop( false, true ); + + // "tabs" queue must not contain more than two elements, + // which are the callbacks for the latest clicked tab... + this.element.queue( "tabs", this.element.queue( "tabs" ).splice( -2, 2 ) ); + + // terminate pending requests from other tabs + if ( this.xhr ) { + this.xhr.abort(); + delete this.xhr; + } + + // take care of tab labels + this._cleanup(); + return this; + }, + + url: function( index, url ) { + this.anchors.eq( index ).removeData( "cache.tabs" ).data( "load.tabs", url ); + return this; + }, + + length: function() { + return this.anchors.length; + } +}); + +$.extend( $.ui.tabs, { + version: "1.8.24" +}); + +/* + * Tabs Extensions + */ + +/* + * Rotate + */ +$.extend( $.ui.tabs.prototype, { + rotation: null, + rotate: function( ms, continuing ) { + var self = this, + o = this.options; + + var rotate = self._rotate || ( self._rotate = function( e ) { + clearTimeout( self.rotation ); + self.rotation = setTimeout(function() { + var t = o.selected; + self.select( ++t < self.anchors.length ? t : 0 ); + }, ms ); + + if ( e ) { + e.stopPropagation(); + } + }); + + var stop = self._unrotate || ( self._unrotate = !continuing + ? function(e) { + if (e.clientX) { // in case of a true click + self.rotate(null); + } + } + : function( e ) { + rotate(); + }); + + // start rotation + if ( ms ) { + this.element.bind( "tabsshow", rotate ); + this.anchors.bind( o.event + ".tabs", stop ); + rotate(); + // stop rotation + } else { + clearTimeout( self.rotation ); + this.element.unbind( "tabsshow", rotate ); + this.anchors.unbind( o.event + ".tabs", stop ); + delete this._rotate; + delete this._unrotate; + } + + return this; + } +}); + +})( jQuery ); diff --git a/packages/jQuery.UI.Combined.1.8.24/Content/Scripts/jquery-ui-1.8.24.min.js b/packages/jQuery.UI.Combined.1.8.24/Content/Scripts/jquery-ui-1.8.24.min.js new file mode 100644 index 0000000..0593020 --- /dev/null +++ b/packages/jQuery.UI.Combined.1.8.24/Content/Scripts/jquery-ui-1.8.24.min.js @@ -0,0 +1,23 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. Insofar as a script file is dual licensed under GPL, + * Microsoft neither took the code under GPL nor distributes it thereunder but + * under the terms set out in this paragraph. All notices and licenses + * below are for informational purposes only. + * + * jQuery UI; Copyright (c) 2012 Paul Bakaus; http://opensource.org/licenses/MIT + * + * Includes jQuery Easing v1.3; Copyright 2008 George McGinley Smith; http://opensource.org/licenses/BSD-3-Clause + * + * NUGET: END LICENSE TEXT */ +/*! jQuery UI - v1.8.24 - 2012-09-28 +* https://github.com/jquery/jquery-ui +* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.effects.core.js, jquery.effects.blind.js, jquery.effects.bounce.js, jquery.effects.clip.js, jquery.effects.drop.js, jquery.effects.explode.js, jquery.effects.fade.js, jquery.effects.fold.js, jquery.effects.highlight.js, jquery.effects.pulsate.js, jquery.effects.scale.js, jquery.effects.shake.js, jquery.effects.slide.js, jquery.effects.transfer.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.position.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.tabs.js +* Copyright (c) 2012 AUTHORS.txt; Licensed MIT */ +(function(a,b){function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;return!b.href||!g||f.nodeName.toLowerCase()!=="map"?!1:(h=a("img[usemap=#"+g+"]")[0],!!h&&d(h))}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.ui=a.ui||{};if(a.ui.version)return;a.extend(a.ui,{version:"1.8.24",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;return a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0),/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a("").outerWidth(1).jquery||a.each(["Width","Height"],function(c,d){function h(b,c,d,f){return a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)}),c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){return c===b?g["inner"+d].call(this):this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){return typeof b!="number"?g["outer"+d].call(this,b):this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:a.expr.createPseudo?a.expr.createPseudo(function(b){return function(c){return!!a.data(c,b)}}):function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.curCSS||(a.curCSS=a.css),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!d||!a.element[0].parentNode)return;for(var e=0;e0?!0:(b[d]=1,e=b[d]>0,b[d]=0,e)},isOverAxis:function(a,b,c){return a>b&&a=9||!!b.button?this._mouseStarted?(this._mouseDrag(b),b.preventDefault()):(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b)),!this._mouseStarted):this._mouseUp(b)},_mouseUp:function(b){return a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b)),!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})}(jQuery),function(a,b){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},destroy:function(){if(!this.element.data("draggable"))return;return this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy(),this},_mouseCapture:function(b){var c=this.options;return this.helper||c.disabled||a(b.target).is(".ui-resizable-handle")?!1:(this.handle=this._getHandle(b),this.handle?(c.iframeFix&&a(c.iframeFix===!0?"iframe":c.iframeFix).each(function(){a('
    ').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(a(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(b){var c=this.options;return this.helper=this._createHelper(b),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),a.ui.ddmanager&&(a.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt),c.containment&&this._setContainment(),this._trigger("start",b)===!1?(this._clear(),!1):(this._cacheHelperProportions(),a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this._mouseDrag(b,!0),a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,b),!0)},_mouseDrag:function(b,c){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute");if(!c){var d=this._uiHash();if(this._trigger("drag",b,d)===!1)return this._mouseUp({}),!1;this.position=d.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";return a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),!1},_mouseStop:function(b){var c=!1;a.ui.ddmanager&&!this.options.dropBehaviour&&(c=a.ui.ddmanager.drop(this,b)),this.dropped&&(c=this.dropped,this.dropped=!1);var d=this.element[0],e=!1;while(d&&(d=d.parentNode))d==document&&(e=!0);if(!e&&this.options.helper==="original")return!1;if(this.options.revert=="invalid"&&!c||this.options.revert=="valid"&&c||this.options.revert===!0||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var f=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){f._trigger("stop",b)!==!1&&f._clear()})}else this._trigger("stop",b)!==!1&&this._clear();return!1},_mouseUp:function(b){return a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,b),a.ui.mouse.prototype._mouseUp.call(this,b)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?!0:!1;return a(this.options.handle,this.element).find("*").andSelf().each(function(){this==b.target&&(c=!0)}),c},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b])):c.helper=="clone"?this.element.clone().removeAttr("id"):this.element;return d.parents("body").length||d.appendTo(c.appendTo=="parent"?this.element[0].parentNode:c.appendTo),d[0]!=this.element[0]&&!/(fixed|absolute)/.test(d.css("position"))&&d.css("position","absolute"),d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[b.containment=="document"?0:a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,b.containment=="document"?0:a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(b.containment=="document"?0:a(window).scrollLeft())+a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(b.containment=="document"?0:a(window).scrollTop())+(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)&&b.containment.constructor!=Array){var c=a(b.containment),d=c[0];if(!d)return;var e=c.offset(),f=a(d).css("overflow")!="hidden";this.containment=[(parseInt(a(d).css("borderLeftWidth"),10)||0)+(parseInt(a(d).css("paddingLeft"),10)||0),(parseInt(a(d).css("borderTopWidth"),10)||0)+(parseInt(a(d).css("paddingTop"),10)||0),(f?Math.max(d.scrollWidth,d.offsetWidth):d.offsetWidth)-(parseInt(a(d).css("borderLeftWidth"),10)||0)-(parseInt(a(d).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(f?Math.max(d.scrollHeight,d.offsetHeight):d.offsetHeight)-(parseInt(a(d).css("borderTopWidth"),10)||0)-(parseInt(a(d).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=c}else b.containment.constructor==Array&&(this.containment=b.containment)},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName),f=b.pageX,g=b.pageY;if(this.originalPosition){var h;if(this.containment){if(this.relative_container){var i=this.relative_container.offset();h=[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]}else h=this.containment;b.pageX-this.offset.click.lefth[2]&&(f=h[2]+this.offset.click.left),b.pageY-this.offset.click.top>h[3]&&(g=h[3]+this.offset.click.top)}if(c.grid){var j=c.grid[1]?this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY;g=h?j-this.offset.click.toph[3]?j-this.offset.click.toph[2]?k-this.offset.click.left=0;k--){var l=d.snapElements[k].left,m=l+d.snapElements[k].width,n=d.snapElements[k].top,o=n+d.snapElements[k].height;if(!(l-f=k&&g<=l||h>=k&&h<=l||gl)&&(e>=i&&e<=j||f>=i&&f<=j||ej);default:return!1}},a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(b,c){var d=a.ui.ddmanager.droppables[b.options.scope]||[],e=c?c.type:null,f=(b.currentItem||b.element).find(":data(droppable)").andSelf();g:for(var h=0;h
  • ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=c.handles||(a(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var d=this.handles.split(",");this.handles={};for(var e=0;e
    ');h.css({zIndex:c.zIndex}),"se"==f&&h.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[f]=".ui-resizable-"+f,this.element.append(h)}}this._renderAxis=function(b){b=b||this.element;for(var c in this.handles){this.handles[c].constructor==String&&(this.handles[c]=a(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var d=a(this.handles[c],this.element),e=0;e=/sw|ne|nw|se|n|s/.test(c)?d.outerHeight():d.outerWidth();var f=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");b.css(f,e),this._proportionallyResize()}if(!a(this.handles[c]).length)continue}},this._renderAxis(this.element),this._handles=a(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!b.resizing){if(this.className)var a=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=a&&a[1]?a[1]:"se"}}),c.autoHide&&(this._handles.hide(),a(this.element).addClass("ui-resizable-autohide").hover(function(){if(c.disabled)return;a(this).removeClass("ui-resizable-autohide"),b._handles.show()},function(){if(c.disabled)return;b.resizing||(a(this).addClass("ui-resizable-autohide"),b._handles.hide())})),this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(b){a(b).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var c=this.element;c.after(this.originalElement.css({position:c.css("position"),width:c.outerWidth(),height:c.outerHeight(),top:c.css("top"),left:c.css("left")})).remove()}return this.originalElement.css("resize",this.originalResizeStyle),b(this.originalElement),this},_mouseCapture:function(b){var c=!1;for(var d in this.handles)a(this.handles[d])[0]==b.target&&(c=!0);return!this.options.disabled&&c},_mouseStart:function(b){var d=this.options,e=this.element.position(),f=this.element;this.resizing=!0,this.documentScroll={top:a(document).scrollTop(),left:a(document).scrollLeft()},(f.is(".ui-draggable")||/absolute/.test(f.css("position")))&&f.css({position:"absolute",top:e.top,left:e.left}),this._renderProxy();var g=c(this.helper.css("left")),h=c(this.helper.css("top"));d.containment&&(g+=a(d.containment).scrollLeft()||0,h+=a(d.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:g,top:h},this.size=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalSize=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalPosition={left:g,top:h},this.sizeDiff={width:f.outerWidth()-f.width(),height:f.outerHeight()-f.height()},this.originalMousePosition={left:b.pageX,top:b.pageY},this.aspectRatio=typeof d.aspectRatio=="number"?d.aspectRatio:this.originalSize.width/this.originalSize.height||1;var i=a(".ui-resizable-"+this.axis).css("cursor");return a("body").css("cursor",i=="auto"?this.axis+"-resize":i),f.addClass("ui-resizable-resizing"),this._propagate("start",b),!0},_mouseDrag:function(b){var c=this.helper,d=this.options,e={},f=this,g=this.originalMousePosition,h=this.axis,i=b.pageX-g.left||0,j=b.pageY-g.top||0,k=this._change[h];if(!k)return!1;var l=k.apply(this,[b,i,j]),m=a.browser.msie&&a.browser.version<7,n=this.sizeDiff;this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)l=this._updateRatio(l,b);return l=this._respectSize(l,b),this._propagate("resize",b),c.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(l),this._trigger("resize",b,this.ui()),!1},_mouseStop:function(b){this.resizing=!1;var c=this.options,d=this;if(this._helper){var e=this._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName),g=f&&a.ui.hasScroll(e[0],"left")?0:d.sizeDiff.height,h=f?0:d.sizeDiff.width,i={width:d.helper.width()-h,height:d.helper.height()-g},j=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,k=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;c.animate||this.element.css(a.extend(i,{top:k,left:j})),d.helper.height(d.size.height),d.helper.width(d.size.width),this._helper&&!c.animate&&this._proportionallyResize()}return a("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",b),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(a){var b=this.options,c,e,f,g,h;h={minWidth:d(b.minWidth)?b.minWidth:0,maxWidth:d(b.maxWidth)?b.maxWidth:Infinity,minHeight:d(b.minHeight)?b.minHeight:0,maxHeight:d(b.maxHeight)?b.maxHeight:Infinity};if(this._aspectRatio||a)c=h.minHeight*this.aspectRatio,f=h.minWidth/this.aspectRatio,e=h.maxHeight*this.aspectRatio,g=h.maxWidth/this.aspectRatio,c>h.minWidth&&(h.minWidth=c),f>h.minHeight&&(h.minHeight=f),ea.width,k=d(a.height)&&e.minHeight&&e.minHeight>a.height;j&&(a.width=e.minWidth),k&&(a.height=e.minHeight),h&&(a.width=e.maxWidth),i&&(a.height=e.maxHeight);var l=this.originalPosition.left+this.originalSize.width,m=this.position.top+this.size.height,n=/sw|nw|w/.test(g),o=/nw|ne|n/.test(g);j&&n&&(a.left=l-e.minWidth),h&&n&&(a.left=l-e.maxWidth),k&&o&&(a.top=m-e.minHeight),i&&o&&(a.top=m-e.maxHeight);var p=!a.width&&!a.height;return p&&!a.left&&a.top?a.top=null:p&&!a.top&&a.left&&(a.left=null),a},_proportionallyResize:function(){var b=this.options;if(!this._proportionallyResizeElements.length)return;var c=this.helper||this.element;for(var d=0;d');var d=a.browser.msie&&a.browser.version<7,e=d?1:0,f=d?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+f,height:this.element.outerHeight()+f,position:"absolute",left:this.elementOffset.left-e+"px",top:this.elementOffset.top-e+"px",zIndex:++c.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(a,b,c){return{width:this.originalSize.width+b}},w:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{left:f.left+b,width:e.width-b}},n:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{top:f.top+c,height:e.height-c}},s:function(a,b,c){return{height:this.originalSize.height+c}},se:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},sw:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,c,d]))},ne:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},nw:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,c,d]))}},_propagate:function(b,c){a.ui.plugin.call(this,b,[c,this.ui()]),b!="resize"&&this._trigger(b,c,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),a.extend(a.ui.resizable,{version:"1.8.24"}),a.ui.plugin.add("resizable","alsoResize",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=function(b){a(b).each(function(){var b=a(this);b.data("resizable-alsoresize",{width:parseInt(b.width(),10),height:parseInt(b.height(),10),left:parseInt(b.css("left"),10),top:parseInt(b.css("top"),10)})})};typeof e.alsoResize=="object"&&!e.alsoResize.parentNode?e.alsoResize.length?(e.alsoResize=e.alsoResize[0],f(e.alsoResize)):a.each(e.alsoResize,function(a){f(a)}):f(e.alsoResize)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.originalSize,g=d.originalPosition,h={height:d.size.height-f.height||0,width:d.size.width-f.width||0,top:d.position.top-g.top||0,left:d.position.left-g.left||0},i=function(b,d){a(b).each(function(){var b=a(this),e=a(this).data("resizable-alsoresize"),f={},g=d&&d.length?d:b.parents(c.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(g,function(a,b){var c=(e[b]||0)+(h[b]||0);c&&c>=0&&(f[b]=c||null)}),b.css(f)})};typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?a.each(e.alsoResize,function(a,b){i(a,b)}):i(e.alsoResize)},stop:function(b,c){a(this).removeData("resizable-alsoresize")}}),a.ui.plugin.add("resizable","animate",{stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d._proportionallyResizeElements,g=f.length&&/textarea/i.test(f[0].nodeName),h=g&&a.ui.hasScroll(f[0],"left")?0:d.sizeDiff.height,i=g?0:d.sizeDiff.width,j={width:d.size.width-i,height:d.size.height-h},k=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,l=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;d.element.animate(a.extend(j,l&&k?{top:l,left:k}:{}),{duration:e.animateDuration,easing:e.animateEasing,step:function(){var c={width:parseInt(d.element.css("width"),10),height:parseInt(d.element.css("height"),10),top:parseInt(d.element.css("top"),10),left:parseInt(d.element.css("left"),10)};f&&f.length&&a(f[0]).css({width:c.width,height:c.height}),d._updateCache(c),d._propagate("resize",b)}})}}),a.ui.plugin.add("resizable","containment",{start:function(b,d){var e=a(this).data("resizable"),f=e.options,g=e.element,h=f.containment,i=h instanceof a?h.get(0):/parent/.test(h)?g.parent().get(0):h;if(!i)return;e.containerElement=a(i);if(/document/.test(h)||h==document)e.containerOffset={left:0,top:0},e.containerPosition={left:0,top:0},e.parentData={element:a(document),left:0,top:0,width:a(document).width(),height:a(document).height()||document.body.parentNode.scrollHeight};else{var j=a(i),k=[];a(["Top","Right","Left","Bottom"]).each(function(a,b){k[a]=c(j.css("padding"+b))}),e.containerOffset=j.offset(),e.containerPosition=j.position(),e.containerSize={height:j.innerHeight()-k[3],width:j.innerWidth()-k[1]};var l=e.containerOffset,m=e.containerSize.height,n=e.containerSize.width,o=a.ui.hasScroll(i,"left")?i.scrollWidth:n,p=a.ui.hasScroll(i)?i.scrollHeight:m;e.parentData={element:i,left:l.left,top:l.top,width:o,height:p}}},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.containerSize,g=d.containerOffset,h=d.size,i=d.position,j=d._aspectRatio||b.shiftKey,k={top:0,left:0},l=d.containerElement;l[0]!=document&&/static/.test(l.css("position"))&&(k=g),i.left<(d._helper?g.left:0)&&(d.size.width=d.size.width+(d._helper?d.position.left-g.left:d.position.left-k.left),j&&(d.size.height=d.size.width/d.aspectRatio),d.position.left=e.helper?g.left:0),i.top<(d._helper?g.top:0)&&(d.size.height=d.size.height+(d._helper?d.position.top-g.top:d.position.top),j&&(d.size.width=d.size.height*d.aspectRatio),d.position.top=d._helper?g.top:0),d.offset.left=d.parentData.left+d.position.left,d.offset.top=d.parentData.top+d.position.top;var m=Math.abs((d._helper?d.offset.left-k.left:d.offset.left-k.left)+d.sizeDiff.width),n=Math.abs((d._helper?d.offset.top-k.top:d.offset.top-g.top)+d.sizeDiff.height),o=d.containerElement.get(0)==d.element.parent().get(0),p=/relative|absolute/.test(d.containerElement.css("position"));o&&p&&(m-=d.parentData.left),m+d.size.width>=d.parentData.width&&(d.size.width=d.parentData.width-m,j&&(d.size.height=d.size.width/d.aspectRatio)),n+d.size.height>=d.parentData.height&&(d.size.height=d.parentData.height-n,j&&(d.size.width=d.size.height*d.aspectRatio))},stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.position,g=d.containerOffset,h=d.containerPosition,i=d.containerElement,j=a(d.helper),k=j.offset(),l=j.outerWidth()-d.sizeDiff.width,m=j.outerHeight()-d.sizeDiff.height;d._helper&&!e.animate&&/relative/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m}),d._helper&&!e.animate&&/static/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m})}}),a.ui.plugin.add("resizable","ghost",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size;d.ghost=d.originalElement.clone(),d.ghost.css({opacity:.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof e.ghost=="string"?e.ghost:""),d.ghost.appendTo(d.helper)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})},stop:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.helper&&d.helper.get(0).removeChild(d.ghost.get(0))}}),a.ui.plugin.add("resizable","grid",{resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size,g=d.originalSize,h=d.originalPosition,i=d.axis,j=e._aspectRatio||b.shiftKey;e.grid=typeof e.grid=="number"?[e.grid,e.grid]:e.grid;var k=Math.round((f.width-g.width)/(e.grid[0]||1))*(e.grid[0]||1),l=Math.round((f.height-g.height)/(e.grid[1]||1))*(e.grid[1]||1);/^(se|s|e)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l):/^(ne)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l):/^(sw)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.left=h.left-k):(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l,d.position.left=h.left-k)}});var c=function(a){return parseInt(a,10)||0},d=function(a){return!isNaN(parseInt(a,10))}}(jQuery),function(a,b){a.widget("ui.selectable",a.ui.mouse,{options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var b=this;this.element.addClass("ui-selectable"),this.dragged=!1;var c;this.refresh=function(){c=a(b.options.filter,b.element[0]),c.addClass("ui-selectee"),c.each(function(){var b=a(this),c=b.offset();a.data(this,"selectable-item",{element:this,$element:b,left:c.left,top:c.top,right:c.left+b.outerWidth(),bottom:c.top+b.outerHeight(),startselected:!1,selected:b.hasClass("ui-selected"),selecting:b.hasClass("ui-selecting"),unselecting:b.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=c.addClass("ui-selectee"),this._mouseInit(),this.helper=a("
    ")},destroy:function(){return this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable"),this._mouseDestroy(),this},_mouseStart:function(b){var c=this;this.opos=[b.pageX,b.pageY];if(this.options.disabled)return;var d=this.options;this.selectees=a(d.filter,this.element[0]),this._trigger("start",b),a(d.appendTo).append(this.helper),this.helper.css({left:b.clientX,top:b.clientY,width:0,height:0}),d.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var d=a.data(this,"selectable-item");d.startselected=!0,!b.metaKey&&!b.ctrlKey&&(d.$element.removeClass("ui-selected"),d.selected=!1,d.$element.addClass("ui-unselecting"),d.unselecting=!0,c._trigger("unselecting",b,{unselecting:d.element}))}),a(b.target).parents().andSelf().each(function(){var d=a.data(this,"selectable-item");if(d){var e=!b.metaKey&&!b.ctrlKey||!d.$element.hasClass("ui-selected");return d.$element.removeClass(e?"ui-unselecting":"ui-selected").addClass(e?"ui-selecting":"ui-unselecting"),d.unselecting=!e,d.selecting=e,d.selected=e,e?c._trigger("selecting",b,{selecting:d.element}):c._trigger("unselecting",b,{unselecting:d.element}),!1}})},_mouseDrag:function(b){var c=this;this.dragged=!0;if(this.options.disabled)return;var d=this.options,e=this.opos[0],f=this.opos[1],g=b.pageX,h=b.pageY;if(e>g){var i=g;g=e,e=i}if(f>h){var i=h;h=f,f=i}return this.helper.css({left:e,top:f,width:g-e,height:h-f}),this.selectees.each(function(){var i=a.data(this,"selectable-item");if(!i||i.element==c.element[0])return;var j=!1;d.tolerance=="touch"?j=!(i.left>g||i.righth||i.bottome&&i.rightf&&i.bottom *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3},_create:function(){var a=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?a.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},destroy:function(){a.Widget.prototype.destroy.call(this),this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var b=this.items.length-1;b>=0;b--)this.items[b].item.removeData(this.widgetName+"-item");return this},_setOption:function(b,c){b==="disabled"?(this.options[b]=c,this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")):a.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(b,c){var d=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(b);var e=null,f=this,g=a(b.target).parents().each(function(){if(a.data(this,d.widgetName+"-item")==f)return e=a(this),!1});a.data(b.target,d.widgetName+"-item")==f&&(e=a(b.target));if(!e)return!1;if(this.options.handle&&!c){var h=!1;a(this.options.handle,e).find("*").andSelf().each(function(){this==b.target&&(h=!0)});if(!h)return!1}return this.currentItem=e,this._removeCurrentsFromItems(),!0},_mouseStart:function(b,c,d){var e=this.options,f=this;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(b),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),e.containment&&this._setContainment(),e.cursor&&(a("body").css("cursor")&&(this._storedCursor=a("body").css("cursor")),a("body").css("cursor",e.cursor)),e.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",e.opacity)),e.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",e.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",b,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!d)for(var g=this.containers.length-1;g>=0;g--)this.containers[g]._trigger("activate",b,f._uiHash(this));return a.ui.ddmanager&&(a.ui.ddmanager.current=this),a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(b),!0},_mouseDrag:function(b){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var c=this.options,d=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-b.pageY=0;e--){var f=this.items[e],g=f.item[0],h=this._intersectsWithPointer(f);if(!h)continue;if(f.instance!==this.currentContainer)continue;if(g!=this.currentItem[0]&&this.placeholder[h==1?"next":"prev"]()[0]!=g&&!a.ui.contains(this.placeholder[0],g)&&(this.options.type=="semi-dynamic"?!a.ui.contains(this.element[0],g):!0)){this.direction=h==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(f))this._rearrange(b,f);else break;this._trigger("change",b,this._uiHash());break}}return this._contactContainers(b),a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),this._trigger("sort",b,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(b,c){if(!b)return;a.ui.ddmanager&&!this.options.dropBehaviour&&a.ui.ddmanager.drop(this,b);if(this.options.revert){var d=this,e=d.placeholder.offset();d.reverting=!0,a(this.helper).animate({left:e.left-this.offset.parent.left-d.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:e.top-this.offset.parent.top-d.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){d._clear(b)})}else this._clear(b,c);return!1},cancel:function(){var b=this;if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("deactivate",null,b._uiHash(this)),this.containers[c].containerCache.over&&(this.containers[c]._trigger("out",null,b._uiHash(this)),this.containers[c].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),a.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?a(this.domPosition.prev).after(this.currentItem):a(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];return b=b||{},a(c).each(function(){var c=(a(b.item||this).attr(b.attribute||"id")||"").match(b.expression||/(.+)[-=_](.+)/);c&&d.push((b.key||c[1]+"[]")+"="+(b.key&&b.expression?c[1]:c[2]))}),!d.length&&b.key&&d.push(b.key+"="),d.join("&")},toArray:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];return b=b||{},c.each(function(){d.push(a(b.item||this).attr(b.attribute||"id")||"")}),d},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,d=this.positionAbs.top,e=d+this.helperProportions.height,f=a.left,g=f+a.width,h=a.top,i=h+a.height,j=this.offset.click.top,k=this.offset.click.left,l=d+j>h&&d+jf&&b+ka[this.floating?"width":"height"]?l:f0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){return this._refreshItems(a),this.refreshPositions(),this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(b){var c=this,d=[],e=[],f=this._connectWith();if(f&&b)for(var g=f.length-1;g>=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&e.push([a.isFunction(j.options.items)?j.options.items.call(j.element):a(j.options.items,j.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),j])}}e.push([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var g=e.length-1;g>=0;g--)e[g][0].each(function(){d.push(this)});return a(d)},_removeCurrentsFromItems:function(){var a=this.currentItem.find(":data("+this.widgetName+"-item)");for(var b=0;b=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&(e.push([a.isFunction(j.options.items)?j.options.items.call(j.element[0],b,{item:this.currentItem}):a(j.options.items,j.element),j]),this.containers.push(j))}}for(var g=e.length-1;g>=0;g--){var k=e[g][1],l=e[g][0];for(var i=0,m=l.length;i=0;c--){var d=this.items[c];if(d.instance!=this.currentContainer&&this.currentContainer&&d.item[0]!=this.currentItem[0])continue;var e=this.options.toleranceElement?a(this.options.toleranceElement,d.item):d.item;b||(d.width=e.outerWidth(),d.height=e.outerHeight());var f=e.offset();d.left=f.left,d.top=f.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var c=this.containers.length-1;c>=0;c--){var f=this.containers[c].element.offset();this.containers[c].containerCache.left=f.left,this.containers[c].containerCache.top=f.top,this.containers[c].containerCache.width=this.containers[c].element.outerWidth(),this.containers[c].containerCache.height=this.containers[c].element.outerHeight()}return this},_createPlaceholder:function(b){var c=b||this,d=c.options;if(!d.placeholder||d.placeholder.constructor==String){var e=d.placeholder;d.placeholder={element:function(){var b=a(document.createElement(c.currentItem[0].nodeName)).addClass(e||c.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];return e||(b.style.visibility="hidden"),b},update:function(a,b){if(e&&!d.forcePlaceholderSize)return;b.height()||b.height(c.currentItem.innerHeight()-parseInt(c.currentItem.css("paddingTop")||0,10)-parseInt(c.currentItem.css("paddingBottom")||0,10)),b.width()||b.width(c.currentItem.innerWidth()-parseInt(c.currentItem.css("paddingLeft")||0,10)-parseInt(c.currentItem.css("paddingRight")||0,10))}}}c.placeholder=a(d.placeholder.element.call(c.element,c.currentItem)),c.currentItem.after(c.placeholder),d.placeholder.update(c,c.placeholder)},_contactContainers:function(b){var c=null,d=null;for(var e=this.containers.length-1;e>=0;e--){if(a.ui.contains(this.currentItem[0],this.containers[e].element[0]))continue;if(this._intersectsWith(this.containers[e].containerCache)){if(c&&a.ui.contains(this.containers[e].element[0],c.element[0]))continue;c=this.containers[e],d=e}else this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",b,this._uiHash(this)),this.containers[e].containerCache.over=0)}if(!c)return;if(this.containers.length===1)this.containers[d]._trigger("over",b,this._uiHash(this)),this.containers[d].containerCache.over=1;else if(this.currentContainer!=this.containers[d]){var f=1e4,g=null,h=this.positionAbs[this.containers[d].floating?"left":"top"];for(var i=this.items.length-1;i>=0;i--){if(!a.ui.contains(this.containers[d].element[0],this.items[i].item[0]))continue;var j=this.containers[d].floating?this.items[i].item.offset().left:this.items[i].item.offset().top;Math.abs(j-h)0?"down":"up")}if(!g&&!this.options.dropOnEmpty)return;this.currentContainer=this.containers[d],g?this._rearrange(b,g,null,!0):this._rearrange(b,null,this.containers[d].element,!0),this._trigger("change",b,this._uiHash()),this.containers[d]._trigger("change",b,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[d]._trigger("over",b,this._uiHash(this)),this.containers[d].containerCache.over=1}},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b,this.currentItem])):c.helper=="clone"?this.currentItem.clone():this.currentItem;return d.parents("body").length||a(c.appendTo!="parent"?c.appendTo:this.currentItem[0].parentNode)[0].appendChild(d[0]),d[0]==this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(d[0].style.width==""||c.forceHelperSize)&&d.width(this.currentItem.width()),(d[0].style.height==""||c.forceHelperSize)&&d.height(this.currentItem.height()),d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.currentItem.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)){var c=a(b.containment)[0],d=a(b.containment).offset(),e=a(c).css("overflow")!="hidden";this.containment=[d.left+(parseInt(a(c).css("borderLeftWidth"),10)||0)+(parseInt(a(c).css("paddingLeft"),10)||0)-this.margins.left,d.top+(parseInt(a(c).css("borderTopWidth"),10)||0)+(parseInt(a(c).css("paddingTop"),10)||0)-this.margins.top,d.left+(e?Math.max(c.scrollWidth,c.offsetWidth):c.offsetWidth)-(parseInt(a(c).css("borderLeftWidth"),10)||0)-(parseInt(a(c).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,d.top+(e?Math.max(c.scrollHeight,c.offsetHeight):c.offsetHeight)-(parseInt(a(c).css("borderTopWidth"),10)||0)-(parseInt(a(c).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName);this.cssPosition=="relative"&&(this.scrollParent[0]==document||this.scrollParent[0]==this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset());var f=b.pageX,g=b.pageY;if(this.originalPosition){this.containment&&(b.pageX-this.offset.click.leftthis.containment[2]&&(f=this.containment[2]+this.offset.click.left),b.pageY-this.offset.click.top>this.containment[3]&&(g=this.containment[3]+this.offset.click.top));if(c.grid){var h=this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1];g=this.containment?h-this.offset.click.topthis.containment[3]?h-this.offset.click.topthis.containment[2]?i-this.offset.click.left=0;f--)c||d.push(function(a){return function(b){a._trigger("deactivate",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over&&(d.push(function(a){return function(b){a._trigger("out",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over=0);this._storedCursor&&a("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!c){this._trigger("beforeStop",b,this._uiHash());for(var f=0;f").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e=document.activeElement;try{e.id}catch(f){e=document.body}return b.wrap(d),(b[0]===e||a.contains(b[0],e))&&a(e).focus(),d=b.parent(),b.css("position")=="static"?(d.css({position:"relative"}),b.css({position:"relative"})):(a.extend(c,{position:b.css("position"),zIndex:b.css("z-index")}),a.each(["top","left","bottom","right"],function(a,d){c[d]=b.css(d),isNaN(parseInt(c[d],10))&&(c[d]="auto")}),b.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),d.css(c).show()},removeWrapper:function(b){var c,d=document.activeElement;return b.parent().is(".ui-effects-wrapper")?(c=b.parent().replaceWith(b),(b[0]===d||a.contains(b[0],d))&&a(d).focus(),c):b},setTransition:function(b,c,d,e){return e=e||{},a.each(c,function(a,c){var f=b.cssUnit(c);f[0]>0&&(e[c]=f[0]*d+f[1])}),e}}),a.fn.extend({effect:function(b,c,d,e){var f=k.apply(this,arguments),g={options:f[1],duration:f[2],callback:f[3]},h=g.options.mode,i=a.effects[b];return a.fx.off||!i?h?this[h](g.duration,g.callback):this.each(function(){g.callback&&g.callback.call(this)}):i.call(this,g)},_show:a.fn.show,show:function(a){if(l(a))return this._show.apply(this,arguments);var b=k.apply(this,arguments);return b[1].mode="show",this.effect.apply(this,b)},_hide:a.fn.hide,hide:function(a){if(l(a))return this._hide.apply(this,arguments);var b=k.apply(this,arguments);return b[1].mode="hide",this.effect.apply(this,b)},__toggle:a.fn.toggle,toggle:function(b){if(l(b)||typeof b=="boolean"||a.isFunction(b))return this.__toggle.apply(this,arguments);var c=k.apply(this,arguments);return c[1].mode="toggle",this.effect.apply(this,c)},cssUnit:function(b){var c=this.css(b),d=[];return a.each(["em","px","%","pt"],function(a,b){c.indexOf(b)>0&&(d=[parseFloat(c),b])}),d}});var m={};a.each(["Quad","Cubic","Quart","Quint","Expo"],function(a,b){m[b]=function(b){return Math.pow(b,a+2)}}),a.extend(m,{Sine:function(a){return 1-Math.cos(a*Math.PI/2)},Circ:function(a){return 1-Math.sqrt(1-a*a)},Elastic:function(a){return a===0||a===1?a:-Math.pow(2,8*(a-1))*Math.sin(((a-1)*80-7.5)*Math.PI/15)},Back:function(a){return a*a*(3*a-2)},Bounce:function(a){var b,c=4;while(a<((b=Math.pow(2,--c))-1)/11);return 1/Math.pow(4,3-c)-7.5625*Math.pow((b*3-2)/22-a,2)}}),a.each(m,function(b,c){a.easing["easeIn"+b]=c,a.easing["easeOut"+b]=function(a){return 1-c(1-a)},a.easing["easeInOut"+b]=function(a){return a<.5?c(a*2)/2:c(a*-2+2)/-2+1}})}(jQuery),function(a,b){a.effects.blind=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.direction||"vertical";a.effects.save(c,d),c.show();var g=a.effects.createWrapper(c).css({overflow:"hidden"}),h=f=="vertical"?"height":"width",i=f=="vertical"?g.height():g.width();e=="show"&&g.css(h,0);var j={};j[h]=e=="show"?i:0,g.animate(j,b.duration,b.options.easing,function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}}(jQuery),function(a,b){a.effects.bounce=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"effect"),f=b.options.direction||"up",g=b.options.distance||20,h=b.options.times||5,i=b.duration||250;/show|hide/.test(e)&&d.push("opacity"),a.effects.save(c,d),c.show(),a.effects.createWrapper(c);var j=f=="up"||f=="down"?"top":"left",k=f=="up"||f=="left"?"pos":"neg",g=b.options.distance||(j=="top"?c.outerHeight(!0)/3:c.outerWidth(!0)/3);e=="show"&&c.css("opacity",0).css(j,k=="pos"?-g:g),e=="hide"&&(g=g/(h*2)),e!="hide"&&h--;if(e=="show"){var l={opacity:1};l[j]=(k=="pos"?"+=":"-=")+g,c.animate(l,i/2,b.options.easing),g=g/2,h--}for(var m=0;m").css({position:"absolute",visibility:"visible",left:-j*(g/d),top:-i*(h/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:g/d,height:h/c,left:f.left+j*(g/d)+(b.options.mode=="show"?(j-Math.floor(d/2))*(g/d):0),top:f.top+i*(h/c)+(b.options.mode=="show"?(i-Math.floor(c/2))*(h/c):0),opacity:b.options.mode=="show"?0:1}).animate({left:f.left+j*(g/d)+(b.options.mode=="show"?0:(j-Math.floor(d/2))*(g/d)),top:f.top+i*(h/c)+(b.options.mode=="show"?0:(i-Math.floor(c/2))*(h/c)),opacity:b.options.mode=="show"?1:0},b.duration||500);setTimeout(function(){b.options.mode=="show"?e.css({visibility:"visible"}):e.css({visibility:"visible"}).hide(),b.callback&&b.callback.apply(e[0]),e.dequeue(),a("div.ui-effects-explode").remove()},b.duration||500)})}}(jQuery),function(a,b){a.effects.fade=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"hide");c.animate({opacity:d},{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}}(jQuery),function(a,b){a.effects.fold=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.size||15,g=!!b.options.horizFirst,h=b.duration?b.duration/2:a.fx.speeds._default/2;a.effects.save(c,d),c.show();var i=a.effects.createWrapper(c).css({overflow:"hidden"}),j=e=="show"!=g,k=j?["width","height"]:["height","width"],l=j?[i.width(),i.height()]:[i.height(),i.width()],m=/([0-9]+)%/.exec(f);m&&(f=parseInt(m[1],10)/100*l[e=="hide"?0:1]),e=="show"&&i.css(g?{height:0,width:f}:{height:f,width:0});var n={},p={};n[k[0]]=e=="show"?l[0]:f,p[k[1]]=e=="show"?l[1]:0,i.animate(n,h,b.options.easing).animate(p,h,b.options.easing,function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}}(jQuery),function(a,b){a.effects.highlight=function(b){return this.queue(function(){var c=a(this),d=["backgroundImage","backgroundColor","opacity"],e=a.effects.setMode(c,b.options.mode||"show"),f={backgroundColor:c.css("backgroundColor")};e=="hide"&&(f.opacity=0),a.effects.save(c,d),c.show().css({backgroundImage:"none",backgroundColor:b.options.color||"#ffff99"}).animate(f,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),e=="show"&&!a.support.opacity&&this.style.removeAttribute("filter"),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}}(jQuery),function(a,b){a.effects.pulsate=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"show"),e=(b.options.times||5)*2-1,f=b.duration?b.duration/2:a.fx.speeds._default/2,g=c.is(":visible"),h=0;g||(c.css("opacity",0).show(),h=1),(d=="hide"&&g||d=="show"&&!g)&&e--;for(var i=0;i').appendTo(document.body).addClass(b.options.className).css({top:g.top,left:g.left,height:c.innerHeight(),width:c.innerWidth(),position:"absolute"}).animate(f,b.duration,b.options.easing,function(){h.remove(),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}}(jQuery),function(a,b){a.widget("ui.accordion",{options:{active:0,animated:"slide",autoHeight:!0,clearStyle:!1,collapsible:!1,event:"click",fillSpace:!1,header:"> li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:!1,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var b=this,c=b.options;b.running=0,b.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"),b.headers=b.element.find(c.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){if(c.disabled)return;a(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){if(c.disabled)return;a(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){if(c.disabled)return;a(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){if(c.disabled)return;a(this).removeClass("ui-state-focus")}),b.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");if(c.navigation){var d=b.element.find("a").filter(c.navigationFilter).eq(0);if(d.length){var e=d.closest(".ui-accordion-header");e.length?b.active=e:b.active=d.closest(".ui-accordion-content").prev()}}b.active=b._findActive(b.active||c.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top"),b.active.next().addClass("ui-accordion-content-active"),b._createIcons(),b.resize(),b.element.attr("role","tablist"),b.headers.attr("role","tab").bind("keydown.accordion",function(a){return b._keydown(a)}).next().attr("role","tabpanel"),b.headers.not(b.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide(),b.active.length?b.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):b.headers.eq(0).attr("tabIndex",0),a.browser.safari||b.headers.find("a").attr("tabIndex",-1),c.event&&b.headers.bind(c.event.split(" ").join(".accordion ")+".accordion",function(a){b._clickHandler.call(b,a,this),a.preventDefault()})},_createIcons:function(){var b=this.options;b.icons&&(a("").addClass("ui-icon "+b.icons.header).prependTo(this.headers),this.active.children(".ui-icon").toggleClass(b.icons.header).toggleClass(b.icons.headerSelected),this.element.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.children(".ui-icon").remove(),this.element.removeClass("ui-accordion-icons")},destroy:function(){var b=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex"),this.headers.find("a").removeAttr("tabIndex"),this._destroyIcons();var c=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");return(b.autoHeight||b.fillHeight)&&c.css("height",""),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments),b=="active"&&this.activate(c),b=="icons"&&(this._destroyIcons(),c&&this._createIcons()),b=="disabled"&&this.headers.add(this.headers.next())[c?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(b){if(this.options.disabled||b.altKey||b.ctrlKey)return;var c=a.ui.keyCode,d=this.headers.length,e=this.headers.index(b.target),f=!1;switch(b.keyCode){case c.RIGHT:case c.DOWN:f=this.headers[(e+1)%d];break;case c.LEFT:case c.UP:f=this.headers[(e-1+d)%d];break;case c.SPACE:case c.ENTER:this._clickHandler({target:b.target},b.target),b.preventDefault()}return f?(a(b.target).attr("tabIndex",-1),a(f).attr("tabIndex",0),f.focus(),!1):!0},resize:function(){var b=this.options,c;if(b.fillSpace){if(a.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}c=this.element.parent().height(),a.browser.msie&&this.element.parent().css("overflow",d),this.headers.each(function(){c-=a(this).outerHeight(!0)}),this.headers.next().each(function(){a(this).height(Math.max(0,c-a(this).innerHeight()+a(this).height()))}).css("overflow","auto")}else b.autoHeight&&(c=0,this.headers.next().each(function(){c=Math.max(c,a(this).height("").height())}).height(c));return this},activate:function(a){this.options.active=a;var b=this._findActive(a)[0];return this._clickHandler({target:b},b),this},_findActive:function(b){return b?typeof b=="number"?this.headers.filter(":eq("+b+")"):this.headers.not(this.headers.not(b)):b===!1?a([]):this.headers.filter(":eq(0)")},_clickHandler:function(b,c){var d=this.options;if(d.disabled)return;if(!b.target){if(!d.collapsible)return;this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header),this.active.next().addClass("ui-accordion-content-active");var e=this.active.next(),f={options:d,newHeader:a([]),oldHeader:d.active,newContent:a([]),oldContent:e},g=this.active=a([]);this._toggle(g,e,f);return}var h=a(b.currentTarget||c),i=h[0]===this.active[0];d.active=d.collapsible&&i?!1:this.headers.index(h);if(this.running||!d.collapsible&&i)return;var j=this.active,g=h.next(),e=this.active.next(),f={options:d,newHeader:i&&d.collapsible?a([]):h,oldHeader:this.active,newContent:i&&d.collapsible?a([]):g,oldContent:e},k=this.headers.index(this.active[0])>this.headers.index(h[0]);this.active=i?a([]):h,this._toggle(g,e,f,i,k),j.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header),i||(h.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected),h.next().addClass("ui-accordion-content-active"));return},_toggle:function(b,c,d,e,f){var g=this,h=g.options;g.toShow=b,g.toHide=c,g.data=d;var i=function(){if(!g)return;return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data),g.running=c.size()===0?b.size():c.size();if(h.animated){var j={};h.collapsible&&e?j={toShow:a([]),toHide:c,complete:i,down:f,autoHeight:h.autoHeight||h.fillSpace}:j={toShow:b,toHide:c,complete:i,down:f,autoHeight:h.autoHeight||h.fillSpace},h.proxied||(h.proxied=h.animated),h.proxiedDuration||(h.proxiedDuration=h.duration),h.animated=a.isFunction(h.proxied)?h.proxied(j):h.proxied,h.duration=a.isFunction(h.proxiedDuration)?h.proxiedDuration(j):h.proxiedDuration;var k=a.ui.accordion.animations,l=h.duration,m=h.animated;m&&!k[m]&&!a.easing[m]&&(m="slide"),k[m]||(k[m]=function(a){this.slide(a,{easing:m,duration:l||700})}),k[m](j)}else h.collapsible&&e?b.toggle():(c.hide(),b.show()),i(!0);c.prev().attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).blur(),b.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(this.running)return;this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""}),this.toHide.removeClass("ui-accordion-content-active"),this.toHide.length&&(this.toHide.parent()[0].className=this.toHide.parent()[0].className),this._trigger("change",null,this.data)}}),a.extend(a.ui.accordion,{version:"1.8.24",animations:{slide:function(b,c){b=a.extend({easing:"swing",duration:300},b,c);if(!b.toHide.size()){b.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},b);return}if(!b.toShow.size()){b.toHide.animate({height:"hide",paddingTop:"hide",paddingBottom:"hide"},b);return}var d=b.toShow.css("overflow"),e=0,f={},g={},h=["height","paddingTop","paddingBottom"],i,j=b.toShow;i=j[0].style.width,j.width(j.parent().width()-parseFloat(j.css("paddingLeft"))-parseFloat(j.css("paddingRight"))-(parseFloat(j.css("borderLeftWidth"))||0)-(parseFloat(j.css("borderRightWidth"))||0)),a.each(h,function(c,d){g[d]="hide";var e=(""+a.css(b.toShow[0],d)).match(/^([\d+-.]+)(.*)$/);f[d]={value:e[1],unit:e[2]||"px"}}),b.toShow.css({height:0,overflow:"hidden"}).show(),b.toHide.filter(":hidden").each(b.complete).end().filter(":visible").animate(g,{step:function(a,c){c.prop=="height"&&(e=c.end-c.start===0?0:(c.now-c.start)/(c.end-c.start)),b.toShow[0].style[c.prop]=e*f[c.prop].value+f[c.prop].unit},duration:b.duration,easing:b.easing,complete:function(){b.autoHeight||b.toShow.css("height",""),b.toShow.css({width:i,overflow:d}),b.complete()}})},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1e3:200})}}})}(jQuery),function(a,b){var c=0;a.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var b=this,c=this.element[0].ownerDocument,d;this.isMultiLine=this.element.is("textarea"),this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(b.options.disabled||b.element.propAttr("readOnly"))return;d=!1;var e=a.ui.keyCode;switch(c.keyCode){case e.PAGE_UP:b._move("previousPage",c);break;case e.PAGE_DOWN:b._move("nextPage",c);break;case e.UP:b._keyEvent("previous",c);break;case e.DOWN:b._keyEvent("next",c);break;case e.ENTER:case e.NUMPAD_ENTER:b.menu.active&&(d=!0,c.preventDefault());case e.TAB:if(!b.menu.active)return;b.menu.select(c);break;case e.ESCAPE:b.element.val(b.term),b.close(c);break;default:clearTimeout(b.searching),b.searching=setTimeout(function(){b.term!=b.element.val()&&(b.selectedItem=null,b.search(null,c))},b.options.delay)}}).bind("keypress.autocomplete",function(a){d&&(d=!1,a.preventDefault())}).bind("focus.autocomplete",function(){if(b.options.disabled)return;b.selectedItem=null,b.previous=b.element.val()}).bind("blur.autocomplete",function(a){if(b.options.disabled)return;clearTimeout(b.searching),b.closing=setTimeout(function(){b.close(a),b._change(a)},150)}),this._initSource(),this.menu=a("
      ").addClass("ui-autocomplete").appendTo(a(this.options.appendTo||"body",c)[0]).mousedown(function(c){var d=b.menu.element[0];a(c.target).closest(".ui-menu-item").length||setTimeout(function(){a(document).one("mousedown",function(c){c.target!==b.element[0]&&c.target!==d&&!a.ui.contains(d,c.target)&&b.close()})},1),setTimeout(function(){clearTimeout(b.closing)},13)}).menu({focus:function(a,c){var d=c.item.data("item.autocomplete");!1!==b._trigger("focus",a,{item:d})&&/^key/.test(a.originalEvent.type)&&b.element.val(d.value)},selected:function(a,d){var e=d.item.data("item.autocomplete"),f=b.previous;b.element[0]!==c.activeElement&&(b.element.focus(),b.previous=f,setTimeout(function(){b.previous=f,b.selectedItem=e},1)),!1!==b._trigger("select",a,{item:e})&&b.element.val(e.value),b.term=b.element.val(),b.close(a),b.selectedItem=e},blur:function(a,c){b.menu.element.is(":visible")&&b.element.val()!==b.term&&b.element.val(b.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu"),a.fn.bgiframe&&this.menu.element.bgiframe(),b.beforeunloadHandler=function(){b.element.removeAttr("autocomplete")},a(window).bind("beforeunload",b.beforeunloadHandler)},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"),this.menu.element.remove(),a(window).unbind("beforeunload",this.beforeunloadHandler),a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments),b==="source"&&this._initSource(),b==="appendTo"&&this.menu.element.appendTo(a(c||"body",this.element[0].ownerDocument)[0]),b==="disabled"&&c&&this.xhr&&this.xhr.abort()},_initSource:function(){var b=this,c,d;a.isArray(this.options.source)?(c=this.options.source,this.source=function(b,d){d(a.ui.autocomplete.filter(c,b.term))}):typeof this.options.source=="string"?(d=this.options.source,this.source=function(c,e){b.xhr&&b.xhr.abort(),b.xhr=a.ajax({url:d,data:c,dataType:"json",success:function(a,b){e(a)},error:function(){e([])}})}):this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val(),this.term=this.element.val();if(a.length").data("item.autocomplete",c).append(a("
      ").text(c.label)).appendTo(b)},_move:function(a,b){if(!this.menu.element.is(":visible")){this.search(null,b);return}if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term),this.menu.deactivate();return}this.menu[a](b)},widget:function(){return this.menu.element},_keyEvent:function(a,b){if(!this.isMultiLine||this.menu.element.is(":visible"))this._move(a,b),b.preventDefault()}}),a.extend(a.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(b,c){var d=new RegExp(a.ui.autocomplete.escapeRegex(c),"i");return a.grep(b,function(a){return d.test(a.label||a.value||a)})}})}(jQuery),function(a){a.widget("ui.menu",{_create:function(){var b=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){if(!a(c.target).closest(".ui-menu-item a").length)return;c.preventDefault(),b.select(c)}),this.refresh()},refresh:function(){var b=this,c=this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem");c.children("a").addClass("ui-corner-all").attr("tabindex",-1).mouseenter(function(c){b.activate(c,a(this).parent())}).mouseleave(function(){b.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var c=b.offset().top-this.element.offset().top,d=this.element.scrollTop(),e=this.element.height();c<0?this.element.scrollTop(d+c):c>=e&&this.element.scrollTop(d+c-e+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end(),this._trigger("focus",a,{item:b})},deactivate:function(){if(!this.active)return;this.active.children("a").removeClass("ui-state-hover").removeAttr("id"),this._trigger("blur"),this.active=null},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,c){if(!this.active){this.activate(c,this.element.children(b));return}var d=this.active[a+"All"](".ui-menu-item").eq(0);d.length?this.activate(c,d):this.activate(c,this.element.children(b))},nextPage:function(b){if(this.hasScroll()){if(!this.active||this.last()){this.activate(b,this.element.children(".ui-menu-item:first"));return}var c=this.active.offset().top,d=this.element.height(),e=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c-d+a(this).height();return b<10&&b>-10});e.length||(e=this.element.children(".ui-menu-item:last")),this.activate(b,e)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(b){if(this.hasScroll()){if(!this.active||this.first()){this.activate(b,this.element.children(".ui-menu-item:last"));return}var c=this.active.offset().top,d=this.element.height(),e=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c+d-a(this).height();return b<10&&b>-10});e.length||(e=this.element.children(".ui-menu-item:first")),this.activate(b,e)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()",this.element[0].ownerDocument).addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary,f=[];d.primary||d.secondary?(this.options.text&&f.push("ui-button-text-icon"+(e?"s":d.primary?"-primary":"-secondary")),d.primary&&b.prepend(""),d.secondary&&b.append(""),this.options.text||(f.push(e?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||b.attr("title",c))):f.push("ui-button-text-only"),b.addClass(f.join(" "))}}),a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c),a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var b=this.element.css("direction")==="rtl";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(b?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(b?"ui-corner-left":"ui-corner-right").end().end()},destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"),a.Widget.prototype.destroy.call(this)}})}(jQuery),function($,undefined){function Datepicker(){this.debug=!1,this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},$.extend(this._defaults,this.regional[""]),this.dpDiv=bindHover($('
      '))}function bindHover(a){var b="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return a.bind("mouseout",function(a){var c=$(a.target).closest(b);if(!c.length)return;c.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(c){var d=$(c.target).closest(b);if($.datepicker._isDisabledDatepicker(instActive.inline?a.parent()[0]:instActive.input[0])||!d.length)return;d.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),d.addClass("ui-state-hover"),d.hasClass("ui-datepicker-prev")&&d.addClass("ui-datepicker-prev-hover"),d.hasClass("ui-datepicker-next")&&d.addClass("ui-datepicker-next-hover")})}function extendRemove(a,b){$.extend(a,b);for(var c in b)if(b[c]==null||b[c]==undefined)a[c]=b[c];return a}function isArray(a){return a&&($.browser.safari&&typeof a=="object"&&a.length||a.constructor&&a.constructor.toString().match(/\Array\(\)/))}$.extend($.ui,{datepicker:{version:"1.8.24"}});var PROP_NAME="datepicker",dpuuid=(new Date).getTime(),instActive;$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){return extendRemove(this._defaults,a||{}),this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase(),inline=nodeName=="div"||nodeName=="span";target.id||(this.uuid+=1,target.id="dp"+this.uuid);var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{}),nodeName=="input"?this._connectDatepicker(target,inst):inline&&this._inlineDatepicker(target,inst)},_newInst:function(a,b){var c=a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1");return{id:c,input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:b?bindHover($('
      ')):this.dpDiv}},_connectDatepicker:function(a,b){var c=$(a);b.append=$([]),b.trigger=$([]);if(c.hasClass(this.markerClassName))return;this._attachments(c,b),c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),this._autoSize(b),$.data(a,PROP_NAME,b),b.settings.disabled&&this._disableDatepicker(a)},_attachments:function(a,b){var c=this._get(b,"appendText"),d=this._get(b,"isRTL");b.append&&b.append.remove(),c&&(b.append=$(''+c+""),a[d?"before":"after"](b.append)),a.unbind("focus",this._showDatepicker),b.trigger&&b.trigger.remove();var e=this._get(b,"showOn");(e=="focus"||e=="both")&&a.focus(this._showDatepicker);if(e=="button"||e=="both"){var f=this._get(b,"buttonText"),g=this._get(b,"buttonImage");b.trigger=$(this._get(b,"buttonImageOnly")?$("").addClass(this._triggerClass).attr({src:g,alt:f,title:f}):$('').addClass(this._triggerClass).html(g==""?f:$("").attr({src:g,alt:f,title:f}))),a[d?"before":"after"](b.trigger),b.trigger.click(function(){return $.datepicker._datepickerShowing&&$.datepicker._lastInput==a[0]?$.datepicker._hideDatepicker():$.datepicker._datepickerShowing&&$.datepicker._lastInput!=a[0]?($.datepicker._hideDatepicker(),$.datepicker._showDatepicker(a[0])):$.datepicker._showDatepicker(a[0]),!1})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var d=function(a){var b=0,c=0;for(var d=0;db&&(b=a[d].length,c=d);return c};b.setMonth(d(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort"))),b.setDate(d(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=$(a);if(c.hasClass(this.markerClassName))return;c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),$.data(a,PROP_NAME,b),this._setDate(b,this._getDefaultDate(b),!0),this._updateDatepicker(b),this._updateAlternate(b),b.settings.disabled&&this._disableDatepicker(a),b.dpDiv.css("display","block")},_dialogDatepicker:function(a,b,c,d,e){var f=this._dialogInst;if(!f){this.uuid+=1;var g="dp"+this.uuid;this._dialogInput=$(''),this._dialogInput.keydown(this._doKeyDown),$("body").append(this._dialogInput),f=this._dialogInst=this._newInst(this._dialogInput,!1),f.settings={},$.data(this._dialogInput[0],PROP_NAME,f)}extendRemove(f.settings,d||{}),b=b&&b.constructor==Date?this._formatDate(f,b):b,this._dialogInput.val(b),this._pos=e?e.length?e:[e.pageX,e.pageY]:null;if(!this._pos){var h=document.documentElement.clientWidth,i=document.documentElement.clientHeight,j=document.documentElement.scrollLeft||document.body.scrollLeft,k=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[h/2-100+j,i/2-150+k]}return this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),f.settings.onSelect=c,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),$.blockUI&&$.blockUI(this.dpDiv),$.data(this._dialogInput[0],PROP_NAME,f),this},_destroyDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!b.hasClass(this.markerClassName))return;var d=a.nodeName.toLowerCase();$.removeData(a,PROP_NAME),d=="input"?(c.append.remove(),c.trigger.remove(),b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(d=="div"||d=="span")&&b.removeClass(this.markerClassName).empty()},_enableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!b.hasClass(this.markerClassName))return;var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!1,c.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().removeClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b})},_disableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!b.hasClass(this.markerClassName))return;var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!0,c.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().addClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b}),this._disabledInputs[this._disabledInputs.length]=a},_isDisabledDatepicker:function(a){if(!a)return!1;for(var b=0;b-1}},_doKeyUp:function(a){var b=$.datepicker._getInst(a.target);if(b.input.val()!=b.lastVal)try{var c=$.datepicker.parseDate($.datepicker._get(b,"dateFormat"),b.input?b.input.val():null,$.datepicker._getFormatConfig(b));c&&($.datepicker._setDateFromField(b),$.datepicker._updateAlternate(b),$.datepicker._updateDatepicker(b))}catch(d){$.datepicker.log(d)}return!0},_showDatepicker:function(a){a=a.target||a,a.nodeName.toLowerCase()!="input"&&(a=$("input",a.parentNode)[0]);if($.datepicker._isDisabledDatepicker(a)||$.datepicker._lastInput==a)return;var b=$.datepicker._getInst(a);$.datepicker._curInst&&$.datepicker._curInst!=b&&($.datepicker._curInst.dpDiv.stop(!0,!0),b&&$.datepicker._datepickerShowing&&$.datepicker._hideDatepicker($.datepicker._curInst.input[0]));var c=$.datepicker._get(b,"beforeShow"),d=c?c.apply(a,[a,b]):{};if(d===!1)return;extendRemove(b.settings,d),b.lastVal=null,$.datepicker._lastInput=a,$.datepicker._setDateFromField(b),$.datepicker._inDialog&&(a.value=""),$.datepicker._pos||($.datepicker._pos=$.datepicker._findPos(a),$.datepicker._pos[1]+=a.offsetHeight);var e=!1;$(a).parents().each(function(){return e|=$(this).css("position")=="fixed",!e}),e&&$.browser.opera&&($.datepicker._pos[0]-=document.documentElement.scrollLeft,$.datepicker._pos[1]-=document.documentElement.scrollTop);var f={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null,b.dpDiv.empty(),b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),$.datepicker._updateDatepicker(b),f=$.datepicker._checkOffset(b,f,e),b.dpDiv.css({position:$.datepicker._inDialog&&$.blockUI?"static":e?"fixed":"absolute",display:"none",left:f.left+"px",top:f.top+"px"});if(!b.inline){var g=$.datepicker._get(b,"showAnim"),h=$.datepicker._get(b,"duration"),i=function(){var a=b.dpDiv.find("iframe.ui-datepicker-cover");if(!!a.length){var c=$.datepicker._getBorders(b.dpDiv);a.css({left:-c[0],top:-c[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex($(a).zIndex()+1),$.datepicker._datepickerShowing=!0,$.effects&&$.effects[g]?b.dpDiv.show(g,$.datepicker._get(b,"showOptions"),h,i):b.dpDiv[g||"show"](g?h:null,i),(!g||!h)&&i(),b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus(),$.datepicker._curInst=b}},_updateDatepicker:function(a){var b=this;b.maxRows=4;var c=$.datepicker._getBorders(a.dpDiv);instActive=a,a.dpDiv.empty().append(this._generateHTML(a)),this._attachHandlers(a);var d=a.dpDiv.find("iframe.ui-datepicker-cover");!d.length||d.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}),a.dpDiv.find("."+this._dayOverClass+" a").mouseover();var e=this._getNumberOfMonths(a),f=e[1],g=17;a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),f>1&&a.dpDiv.addClass("ui-datepicker-multi-"+f).css("width",g*f+"em"),a.dpDiv[(e[0]!=1||e[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"),a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),a==$.datepicker._curInst&&$.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var h=a.yearshtml;setTimeout(function(){h===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml),h=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(a){return{thin:1,medium:2,thick:3}[a]||a};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var d=a.dpDiv.outerWidth(),e=a.dpDiv.outerHeight(),f=a.input?a.input.outerWidth():0,g=a.input?a.input.outerHeight():0,h=document.documentElement.clientWidth+(c?0:$(document).scrollLeft()),i=document.documentElement.clientHeight+(c?0:$(document).scrollTop());return b.left-=this._get(a,"isRTL")?d-f:0,b.left-=c&&b.left==a.input.offset().left?$(document).scrollLeft():0,b.top-=c&&b.top==a.input.offset().top+g?$(document).scrollTop():0,b.left-=Math.min(b.left,b.left+d>h&&h>d?Math.abs(b.left+d-h):0),b.top-=Math.min(b.top,b.top+e>i&&i>e?Math.abs(e+g):0),b},_findPos:function(a){var b=this._getInst(a),c=this._get(b,"isRTL");while(a&&(a.type=="hidden"||a.nodeType!=1||$.expr.filters.hidden(a)))a=a[c?"previousSibling":"nextSibling"];var d=$(a).offset();return[d.left,d.top]},_hideDatepicker:function(a){var b=this._curInst;if(!b||a&&b!=$.data(a,PROP_NAME))return;if(this._datepickerShowing){var c=this._get(b,"showAnim"),d=this._get(b,"duration"),e=function(){$.datepicker._tidyDialog(b)};$.effects&&$.effects[c]?b.dpDiv.hide(c,$.datepicker._get(b,"showOptions"),d,e):b.dpDiv[c=="slideDown"?"slideUp":c=="fadeIn"?"fadeOut":"hide"](c?d:null,e),c||e(),this._datepickerShowing=!1;var f=this._get(b,"onClose");f&&f.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),$.blockUI&&($.unblockUI(),$("body").append(this.dpDiv))),this._inDialog=!1}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(!$.datepicker._curInst)return;var b=$(a.target),c=$.datepicker._getInst(b[0]);(b[0].id!=$.datepicker._mainDivId&&b.parents("#"+$.datepicker._mainDivId).length==0&&!b.hasClass($.datepicker.markerClassName)&&!b.closest("."+$.datepicker._triggerClass).length&&$.datepicker._datepickerShowing&&(!$.datepicker._inDialog||!$.blockUI)||b.hasClass($.datepicker.markerClassName)&&$.datepicker._curInst!=c)&&$.datepicker._hideDatepicker()},_adjustDate:function(a,b,c){var d=$(a),e=this._getInst(d[0]);if(this._isDisabledDatepicker(d[0]))return;this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c),this._updateDatepicker(e)},_gotoToday:function(a){var b=$(a),c=this._getInst(b[0]);if(this._get(c,"gotoCurrent")&&c.currentDay)c.selectedDay=c.currentDay,c.drawMonth=c.selectedMonth=c.currentMonth,c.drawYear=c.selectedYear=c.currentYear;else{var d=new Date;c.selectedDay=d.getDate(),c.drawMonth=c.selectedMonth=d.getMonth(),c.drawYear=c.selectedYear=d.getFullYear()}this._notifyChange(c),this._adjustDate(b)},_selectMonthYear:function(a,b,c){var d=$(a),e=this._getInst(d[0]);e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10),this._notifyChange(e),this._adjustDate(d)},_selectDay:function(a,b,c,d){var e=$(a);if($(d).hasClass(this._unselectableClass)||this._isDisabledDatepicker(e[0]))return;var f=this._getInst(e[0]);f.selectedDay=f.currentDay=$("a",d).html(),f.selectedMonth=f.currentMonth=b,f.selectedYear=f.currentYear=c,this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))},_clearDate:function(a){var b=$(a),c=this._getInst(b[0]);this._selectDate(b,"")},_selectDate:function(a,b){var c=$(a),d=this._getInst(c[0]);b=b!=null?b:this._formatDate(d),d.input&&d.input.val(b),this._updateAlternate(d);var e=this._get(d,"onSelect");e?e.apply(d.input?d.input[0]:null,[b,d]):d.input&&d.input.trigger("change"),d.inline?this._updateDatepicker(d):(this._hideDatepicker(),this._lastInput=d.input[0],typeof d.input[0]!="object"&&d.input.focus(),this._lastInput=null)},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),d=this._getDate(a),e=this.formatDate(c,d,this._getFormatConfig(a));$(b).each(function(){$(this).val(e)})}},noWeekends:function(a){var b=a.getDay();return[b>0&&b<6,""]},iso8601Week:function(a){var b=new Date(a.getTime());b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();return b.setMonth(0),b.setDate(1),Math.floor(Math.round((c-b)/864e5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var d=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;d=typeof d!="string"?d:(new Date).getFullYear()%100+parseInt(d,10);var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,g=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,h=(c?c.monthNames:null)||this._defaults.monthNames,i=-1,j=-1,k=-1,l=-1,m=!1,n=function(b){var c=s+1-1){j=1,k=l;do{var u=this._getDaysInMonth(i,j-1);if(k<=u)break;j++,k-=u}while(!0)}var t=this._daylightSavingAdjust(new Date(i,j-1,k));if(t.getFullYear()!=i||t.getMonth()+1!=j||t.getDate()!=k)throw"Invalid date";return t},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1e7,formatDate:function(a,b,c){if(!b)return"";var d=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,e=(c?c.dayNames:null)||this._defaults.dayNames,f=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,h=function(b){var c=m+112?a.getHours()+2:0),a):null},_setDate:function(a,b,c){var d=!b,e=a.selectedMonth,f=a.selectedYear,g=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=g.getDate(),a.drawMonth=a.selectedMonth=a.currentMonth=g.getMonth(),a.drawYear=a.selectedYear=a.currentYear=g.getFullYear(),(e!=a.selectedMonth||f!=a.selectedYear)&&!c&&this._notifyChange(a),this._adjustInstDate(a),a.input&&a.input.val(d?"":this._formatDate(a))},_getDate:function(a){var b=!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return b},_attachHandlers:function(a){var b=this._get(a,"stepMonths"),c="#"+a.id.replace(/\\\\/g,"\\");a.dpDiv.find("[data-handler]").map(function(){var a={prev:function(){window["DP_jQuery_"+dpuuid].datepicker._adjustDate(c,-b,"M")},next:function(){window["DP_jQuery_"+dpuuid].datepicker._adjustDate(c,+b,"M")},hide:function(){window["DP_jQuery_"+dpuuid].datepicker._hideDatepicker()},today:function(){window["DP_jQuery_"+dpuuid].datepicker._gotoToday(c)},selectDay:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectDay(c,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectMonthYear(c,this,"M"),!1},selectYear:function(){return window["DP_jQuery_"+dpuuid].datepicker._selectMonthYear(c,this,"Y"),!1}};$(this).bind(this.getAttribute("data-event"),a[this.getAttribute("data-handler")])})},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),d=this._get(a,"showButtonPanel"),e=this._get(a,"hideIfNoPrevNext"),f=this._get(a,"navigationAsDateFormat"),g=this._getNumberOfMonths(a),h=this._get(a,"showCurrentAtPos"),i=this._get(a,"stepMonths"),j=g[0]!=1||g[1]!=1,k=this._daylightSavingAdjust(a.currentDay?new Date(a.currentYear,a.currentMonth,a.currentDay):new Date(9999,9,9)),l=this._getMinMaxDate(a,"min"),m=this._getMinMaxDate(a,"max"),n=a.drawMonth-h,o=a.drawYear;n<0&&(n+=12,o--);if(m){var p=this._daylightSavingAdjust(new Date(m.getFullYear(),m.getMonth()-g[0]*g[1]+1,m.getDate()));p=l&&pp)n--,n<0&&(n=11,o--)}a.drawMonth=n,a.drawYear=o;var q=this._get(a,"prevText");q=f?this.formatDate(q,this._daylightSavingAdjust(new Date(o,n-i,1)),this._getFormatConfig(a)):q;var r=this._canAdjustMonth(a,-1,o,n)?''+q+"":e?"":''+q+"",s=this._get(a,"nextText");s=f?this.formatDate(s,this._daylightSavingAdjust(new Date(o,n+i,1)),this._getFormatConfig(a)):s;var t=this._canAdjustMonth(a,1,o,n)?''+s+"":e?"":''+s+"",u=this._get(a,"currentText"),v=this._get(a,"gotoCurrent")&&a.currentDay?k:b;u=f?this.formatDate(u,v,this._getFormatConfig(a)):u;var w=a.inline?"":'",x=d?'
      '+(c?w:"")+(this._isInRange(a,v)?'":"")+(c?"":w)+"
      ":"",y=parseInt(this._get(a,"firstDay"),10);y=isNaN(y)?0:y;var z=this._get(a,"showWeek"),A=this._get(a,"dayNames"),B=this._get(a,"dayNamesShort"),C=this._get(a,"dayNamesMin"),D=this._get(a,"monthNames"),E=this._get(a,"monthNamesShort"),F=this._get(a,"beforeShowDay"),G=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths"),I=this._get(a,"calculateWeek")||this.iso8601Week,J=this._getDefaultDate(a),K="";for(var L=0;L1)switch(N){case 0:Q+=" ui-datepicker-group-first",P=" ui-corner-"+(c?"right":"left");break;case g[1]-1:Q+=" ui-datepicker-group-last",P=" ui-corner-"+(c?"left":"right");break;default:Q+=" ui-datepicker-group-middle",P=""}Q+='">'}Q+='
      '+(/all|left/.test(P)&&L==0?c?t:r:"")+(/all|right/.test(P)&&L==0?c?r:t:"")+this._generateMonthYearHeader(a,n,o,l,m,L>0||N>0,D,E)+'
      '+"";var R=z?'":"";for(var S=0;S<7;S++){var T=(S+y)%7;R+="=5?' class="ui-datepicker-week-end"':"")+">"+''+C[T]+""}Q+=R+"";var U=this._getDaysInMonth(o,n);o==a.selectedYear&&n==a.selectedMonth&&(a.selectedDay=Math.min(a.selectedDay,U));var V=(this._getFirstDayOfMonth(o,n)-y+7)%7,W=Math.ceil((V+U)/7),X=j?this.maxRows>W?this.maxRows:W:W;this.maxRows=X;var Y=this._daylightSavingAdjust(new Date(o,n,1-V));for(var Z=0;Z";var _=z?'":"";for(var S=0;S<7;S++){var ba=F?F.apply(a.input?a.input[0]:null,[Y]):[!0,""],bb=Y.getMonth()!=n,bc=bb&&!H||!ba[0]||l&&Ym;_+='",Y.setDate(Y.getDate()+1),Y=this._daylightSavingAdjust(Y)}Q+=_+""}n++,n>11&&(n=0,o++),Q+="
      '+this._get(a,"weekHeader")+"
      '+this._get(a,"calculateWeek")(Y)+""+(bb&&!G?" ":bc?''+Y.getDate()+"":''+Y.getDate()+"")+"
      "+(j?""+(g[0]>0&&N==g[1]-1?'
      ':""):""),M+=Q}K+=M}return K+=x+($.browser.msie&&parseInt($.browser.version,10)<7&&!a.inline?'':""),a._keyEvent=!1,K},_generateMonthYearHeader:function(a,b,c,d,e,f,g,h){var i=this._get(a,"changeMonth"),j=this._get(a,"changeYear"),k=this._get(a,"showMonthAfterYear"),l='
      ',m="";if(f||!i)m+=''+g[b]+"";else{var n=d&&d.getFullYear()==c,o=e&&e.getFullYear()==c;m+='"}k||(l+=m+(f||!i||!j?" ":""));if(!a.yearshtml){a.yearshtml="";if(f||!j)l+=''+c+"";else{var q=this._get(a,"yearRange").split(":"),r=(new Date).getFullYear(),s=function(a){var b=a.match(/c[+-].*/)?c+parseInt(a.substring(1),10):a.match(/[+-].*/)?r+parseInt(a,10):parseInt(a,10);return isNaN(b)?r:b},t=s(q[0]),u=Math.max(t,s(q[1]||""));t=d?Math.max(t,d.getFullYear()):t,u=e?Math.min(u,e.getFullYear()):u,a.yearshtml+='",l+=a.yearshtml,a.yearshtml=null}}return l+=this._get(a,"yearSuffix"),k&&(l+=(f||!i||!j?" ":"")+m),l+="
      ",l},_adjustInstDate:function(a,b,c){var d=a.drawYear+(c=="Y"?b:0),e=a.drawMonth+(c=="M"?b:0),f=Math.min(a.selectedDay,this._getDaysInMonth(d,e))+(c=="D"?b:0),g=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(d,e,f)));a.selectedDay=g.getDate(),a.drawMonth=a.selectedMonth=g.getMonth(),a.drawYear=a.selectedYear=g.getFullYear(),(c=="M"||c=="Y")&&this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max"),e=c&&bd?d:e,e},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");b&&b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){var b=this._get(a,"numberOfMonths");return b==null?[1,1]:typeof b=="number"?[1,b]:b},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,d){var e=this._getNumberOfMonths(a),f=this._daylightSavingAdjust(new Date(c,d+(b<0?b:e[0]*e[1]),1));return b<0&&f.setDate(this._getDaysInMonth(f.getFullYear(),f.getMonth())),this._isInRange(a,f)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!d||b.getTime()<=d.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");return b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10),{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,d){b||(a.currentDay=a.selectedDay,a.currentMonth=a.selectedMonth,a.currentYear=a.selectedYear);var e=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(d,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),e,this._getFormatConfig(a))}}),$.fn.datepicker=function(a){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick).find("body").append($.datepicker.dpDiv),$.datepicker.initialized=!0);var b=Array.prototype.slice.call(arguments,1);return typeof a!="string"||a!="isDisabled"&&a!="getDate"&&a!="widget"?a=="option"&&arguments.length==2&&typeof arguments[1]=="string"?$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b)):this.each(function(){typeof a=="string"?$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this].concat(b)):$.datepicker._attachDatepicker(this,a)}):$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b))},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.8.24",window["DP_jQuery_"+dpuuid]=$}(jQuery),function(a,b){var c="ui-dialog ui-widget ui-widget-content ui-corner-all ",d={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},e={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0};a.widget("ui.dialog",{options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",collision:"fit",using:function(b){var c=a(this).css(b).offset().top;c<0&&a(this).css("top",b.top-c)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1e3},_create:function(){this.originalTitle=this.element.attr("title"),typeof this.originalTitle!="string"&&(this.originalTitle=""),this.options.title=this.options.title||this.originalTitle;var b=this,d=b.options,e=d.title||" ",f=a.ui.dialog.getTitleId(b.element),g=(b.uiDialog=a("
      ")).appendTo(document.body).hide().addClass(c+d.dialogClass).css({zIndex:d.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(c){d.closeOnEscape&&!c.isDefaultPrevented()&&c.keyCode&&c.keyCode===a.ui.keyCode.ESCAPE&&(b.close(c),c.preventDefault())}).attr({role:"dialog","aria-labelledby":f}).mousedown(function(a){b.moveToTop(!1,a)}),h=b.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g),i=(b.uiDialogTitlebar=a("
      ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),j=a('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){j.addClass("ui-state-hover")},function(){j.removeClass("ui-state-hover")}).focus(function(){j.addClass("ui-state-focus")}).blur(function(){j.removeClass("ui-state-focus")}).click(function(a){return b.close(a),!1}).appendTo(i),k=(b.uiDialogTitlebarCloseText=a("")).addClass("ui-icon ui-icon-closethick").text(d.closeText).appendTo(j),l=a("").addClass("ui-dialog-title").attr("id",f).html(e).prependTo(i);a.isFunction(d.beforeclose)&&!a.isFunction(d.beforeClose)&&(d.beforeClose=d.beforeclose),i.find("*").add(i).disableSelection(),d.draggable&&a.fn.draggable&&b._makeDraggable(),d.resizable&&a.fn.resizable&&b._makeResizable(),b._createButtons(d.buttons),b._isOpen=!1,a.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;return a.overlay&&a.overlay.destroy(),a.uiDialog.hide(),a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"),a.uiDialog.remove(),a.originalTitle&&a.element.attr("title",a.originalTitle),a},widget:function(){return this.uiDialog},close:function(b){var c=this,d,e;if(!1===c._trigger("beforeClose",b))return;return c.overlay&&c.overlay.destroy(),c.uiDialog.unbind("keypress.ui-dialog"),c._isOpen=!1,c.options.hide?c.uiDialog.hide(c.options.hide,function(){c._trigger("close",b)}):(c.uiDialog.hide(),c._trigger("close",b)),a.ui.dialog.overlay.resize(),c.options.modal&&(d=0,a(".ui-dialog").each(function(){this!==c.uiDialog[0]&&(e=a(this).css("z-index"),isNaN(e)||(d=Math.max(d,e)))}),a.ui.dialog.maxZ=d),c},isOpen:function(){return this._isOpen},moveToTop:function(b,c){var d=this,e=d.options,f;return e.modal&&!b||!e.stack&&!e.modal?d._trigger("focus",c):(e.zIndex>a.ui.dialog.maxZ&&(a.ui.dialog.maxZ=e.zIndex),d.overlay&&(a.ui.dialog.maxZ+=1,d.overlay.$el.css("z-index",a.ui.dialog.overlay.maxZ=a.ui.dialog.maxZ)),f={scrollTop:d.element.scrollTop(),scrollLeft:d.element.scrollLeft()},a.ui.dialog.maxZ+=1,d.uiDialog.css("z-index",a.ui.dialog.maxZ),d.element.attr(f),d._trigger("focus",c),d)},open:function(){if(this._isOpen)return;var b=this,c=b.options,d=b.uiDialog;return b.overlay=c.modal?new a.ui.dialog.overlay(b):null,b._size(),b._position(c.position),d.show(c.show),b.moveToTop(!0),c.modal&&d.bind("keydown.ui-dialog",function(b){if(b.keyCode!==a.ui.keyCode.TAB)return;var c=a(":tabbable",this),d=c.filter(":first"),e=c.filter(":last");if(b.target===e[0]&&!b.shiftKey)return d.focus(1),!1;if(b.target===d[0]&&b.shiftKey)return e.focus(1),!1}),a(b.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus(),b._isOpen=!0,b._trigger("open"),b},_createButtons:function(b){var c=this,d=!1,e=a("
      ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),f=a("
      ").addClass("ui-dialog-buttonset").appendTo(e);c.uiDialog.find(".ui-dialog-buttonpane").remove(),typeof b=="object"&&b!==null&&a.each(b,function(){return!(d=!0)}),d&&(a.each(b,function(b,d){d=a.isFunction(d)?{click:d,text:b}:d;var e=a('').click(function(){d.click.apply(c.element[0],arguments)}).appendTo(f);a.each(d,function(a,b){if(a==="click")return;a in e?e[a](b):e.attr(a,b)}),a.fn.button&&e.button()}),e.appendTo(c.uiDialog))},_makeDraggable:function(){function f(a){return{position:a.position,offset:a.offset}}var b=this,c=b.options,d=a(document),e;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(d,g){e=c.height==="auto"?"auto":a(this).height(),a(this).height(a(this).height()).addClass("ui-dialog-dragging"),b._trigger("dragStart",d,f(g))},drag:function(a,c){b._trigger("drag",a,f(c))},stop:function(g,h){c.position=[h.position.left-d.scrollLeft(),h.position.top-d.scrollTop()],a(this).removeClass("ui-dialog-dragging").height(e),b._trigger("dragStop",g,f(h)),a.ui.dialog.overlay.resize()}})},_makeResizable:function(c){function h(a){return{originalPosition:a.originalPosition,originalSize:a.originalSize,position:a.position,size:a.size}}c=c===b?this.options.resizable:c;var d=this,e=d.options,f=d.uiDialog.css("position"),g=typeof c=="string"?c:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:g,start:function(b,c){a(this).addClass("ui-dialog-resizing"),d._trigger("resizeStart",b,h(c))},resize:function(a,b){d._trigger("resize",a,h(b))},stop:function(b,c){a(this).removeClass("ui-dialog-resizing"),e.height=a(this).height(),e.width=a(this).width(),d._trigger("resizeStop",b,h(c)),a.ui.dialog.overlay.resize()}}).css("position",f).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(b){var c=[],d=[0,0],e;if(b){if(typeof b=="string"||typeof b=="object"&&"0"in b)c=b.split?b.split(" "):[b[0],b[1]],c.length===1&&(c[1]=c[0]),a.each(["left","top"],function(a,b){+c[a]===c[a]&&(d[a]=c[a],c[a]=b)}),b={my:c.join(" "),at:c.join(" "),offset:d.join(" ")};b=a.extend({},a.ui.dialog.prototype.options.position,b)}else b=a.ui.dialog.prototype.options.position;e=this.uiDialog.is(":visible"),e||this.uiDialog.show(),this.uiDialog.css({top:0,left:0}).position(a.extend({of:window},b)),e||this.uiDialog.hide()},_setOptions:function(b){var c=this,f={},g=!1;a.each(b,function(a,b){c._setOption(a,b),a in d&&(g=!0),a in e&&(f[a]=b)}),g&&this._size(),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",f)},_setOption:function(b,d){var e=this,f=e.uiDialog;switch(b){case"beforeclose":b="beforeClose";break;case"buttons":e._createButtons(d);break;case"closeText":e.uiDialogTitlebarCloseText.text(""+d);break;case"dialogClass":f.removeClass(e.options.dialogClass).addClass(c+d);break;case"disabled":d?f.addClass("ui-dialog-disabled"):f.removeClass("ui-dialog-disabled");break;case"draggable":var g=f.is(":data(draggable)");g&&!d&&f.draggable("destroy"),!g&&d&&e._makeDraggable();break;case"position":e._position(d);break;case"resizable":var h=f.is(":data(resizable)");h&&!d&&f.resizable("destroy"),h&&typeof d=="string"&&f.resizable("option","handles",d),!h&&d!==!1&&e._makeResizable(d);break;case"title":a(".ui-dialog-title",e.uiDialogTitlebar).html(""+(d||" "))}a.Widget.prototype._setOption.apply(e,arguments)},_size:function(){var b=this.options,c,d,e=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0}),b.minWidth>b.width&&(b.width=b.minWidth),c=this.uiDialog.css({height:"auto",width:b.width}).height(),d=Math.max(0,b.minHeight-c);if(b.height==="auto")if(a.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();var f=this.element.css("height","auto").height();e||this.uiDialog.hide(),this.element.height(Math.max(f,d))}else this.element.height(Math.max(b.height-c,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}}),a.extend(a.ui.dialog,{version:"1.8.24",uuid:0,maxZ:0,getTitleId:function(a){var b=a.attr("id");return b||(this.uuid+=1,b=this.uuid),"ui-dialog-title-"+b},overlay:function(b){this.$el=a.ui.dialog.overlay.create(b)}}),a.extend(a.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:a.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(b){this.instances.length===0&&(setTimeout(function(){a.ui.dialog.overlay.instances.length&&a(document).bind(a.ui.dialog.overlay.events,function(b){if(a(b.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});return a.fn.bgiframe&&c.bgiframe(),this.instances.push(c),c},destroy:function(b){var c=a.inArray(b,this.instances);c!=-1&&this.oldInstances.push(this.instances.splice(c,1)[0]),this.instances.length===0&&a([document,window]).unbind(".dialog-overlay"),b.remove();var d=0;a.each(this.instances,function(){d=Math.max(d,this.css("z-index"))}),this.maxZ=d},height:function(){var b,c;return a.browser.msie&&a.browser.version<7?(b=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),c=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight),b0?b.left-e:Math.max(b.left-c.collisionPosition.left,b.left)},top:function(b,c){var d=a(window),e=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop();b.top=e>0?b.top-e:Math.max(b.top-c.collisionPosition.top,b.top)}},flip:{left:function(b,c){if(c.at[0]===e)return;var d=a(window),f=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft(),g=c.my[0]==="left"?-c.elemWidth:c.my[0]==="right"?c.elemWidth:0,h=c.at[0]==="left"?c.targetWidth:-c.targetWidth,i=-2*c.offset[0];b.left+=c.collisionPosition.left<0?g+h+i:f>0?g+h+i:0},top:function(b,c){if(c.at[1]===e)return;var d=a(window),f=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop(),g=c.my[1]==="top"?-c.elemHeight:c.my[1]==="bottom"?c.elemHeight:0,h=c.at[1]==="top"?c.targetHeight:-c.targetHeight,i=-2*c.offset[1];b.top+=c.collisionPosition.top<0?g+h+i:f>0?g+h+i:0}}},a.offset.setOffset||(a.offset.setOffset=function(b,c){/static/.test(a.curCSS(b,"position"))&&(b.style.position="relative");var d=a(b),e=d.offset(),f=parseInt(a.curCSS(b,"top",!0),10)||0,g=parseInt(a.curCSS(b,"left",!0),10)||0,h={top:c.top-e.top+f,left:c.left-e.left+g};"using"in c?c.using.call(b,h):d.css(h)},a.fn.offset=function(b){var c=this[0];return!c||!c.ownerDocument?null:b?a.isFunction(b)?this.each(function(c){a(this).offset(b.call(this,c,a(this).offset()))}):this.each(function(){a.offset.setOffset(this,b)}):h.call(this)}),a.curCSS||(a.curCSS=a.css),function(){var b=document.getElementsByTagName("body")[0],c=document.createElement("div"),d,e,g,h,i;d=document.createElement(b?"div":"body"),g={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},b&&a.extend(g,{position:"absolute",left:"-1000px",top:"-1000px"});for(var j in g)d.style[j]=g[j];d.appendChild(c),e=b||document.documentElement,e.insertBefore(d,e.firstChild),c.style.cssText="position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;",h=a(c).offset(function(a,b){return b}).offset(),d.innerHTML="",e.removeChild(d),i=h.top+h.left+(b?2e3:0),f.fractions=i>21&&i<22}()}(jQuery),function(a,b){a.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()}),this.valueDiv=a("
      ").appendTo(this.element),this.oldValue=this._value(),this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove(),a.Widget.prototype.destroy.apply(this,arguments)},value:function(a){return a===b?this._value():(this._setOption("value",a),this)},_setOption:function(b,c){b==="value"&&(this.options.value=c,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete")),a.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;return typeof a!="number"&&(a=0),Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var a=this.value(),b=this._percentage();this.oldValue!==a&&(this.oldValue=a,this._trigger("change")),this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(b.toFixed(0)+"%"),this.element.attr("aria-valuenow",a)}}),a.extend(a.ui.progressbar,{version:"1.8.24"})}(jQuery),function(a,b){var c=5;a.widget("ui.slider",a.ui.mouse,{widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var b=this,d=this.options,e=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f="",g=d.values&&d.values.length||1,h=[];this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"+(d.disabled?" ui-slider-disabled ui-disabled":"")),this.range=a([]),d.range&&(d.range===!0&&(d.values||(d.values=[this._valueMin(),this._valueMin()]),d.values.length&&d.values.length!==2&&(d.values=[d.values[0],d.values[0]])),this.range=a("
      ").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(d.range==="min"||d.range==="max"?" ui-slider-range-"+d.range:"")));for(var i=e.length;ic&&(f=c,g=a(this),i=b)}),c.range===!0&&this.values(1)===c.min&&(i+=1,g=a(this.handles[i])),j=this._start(b,i),j===!1?!1:(this._mouseSliding=!0,h._handleIndex=i,g.addClass("ui-state-active").focus(),k=g.offset(),l=!a(b.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:b.pageX-k.left-g.width()/2,top:b.pageY-k.top-g.height()/2-(parseInt(g.css("borderTopWidth"),10)||0)-(parseInt(g.css("borderBottomWidth"),10)||0)+(parseInt(g.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(b,i,e),this._animateOff=!0,!0))},_mouseStart:function(a){return!0},_mouseDrag:function(a){var b={x:a.pageX,y:a.pageY},c=this._normValueFromMouse(b);return this._slide(a,this._handleIndex,c),!1},_mouseStop:function(a){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(a,this._handleIndex),this._change(a,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b,c,d,e,f;return this.orientation==="horizontal"?(b=this.elementSize.width,c=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(b=this.elementSize.height,c=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),d=c/b,d>1&&(d=1),d<0&&(d=0),this.orientation==="vertical"&&(d=1-d),e=this._valueMax()-this._valueMin(),f=this._valueMin()+d*e,this._trimAlignValue(f)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};return this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("start",a,c)},_slide:function(a,b,c){var d,e,f;this.options.values&&this.options.values.length?(d=this.values(b?0:1),this.options.values.length===2&&this.options.range===!0&&(b===0&&c>d||b===1&&c1){this.options.values[b]=this._trimAlignValue(c),this._refreshValue(),this._change(null,b);return}if(!arguments.length)return this._values();if(!a.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(b):this.value();d=this.options.values,e=arguments[0];for(f=0;f=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b,d=a-c;return Math.abs(c)*2>=b&&(d+=c>0?b:-b),parseFloat(d.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var b=this.options.range,c=this.options,d=this,e=this._animateOff?!1:c.animate,f,g={},h,i,j,k;this.options.values&&this.options.values.length?this.handles.each(function(b,i){f=(d.values(b)-d._valueMin())/(d._valueMax()-d._valueMin())*100,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",a(this).stop(1,1)[e?"animate":"css"](g,c.animate),d.options.range===!0&&(d.orientation==="horizontal"?(b===0&&d.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({width:f-h+"%"},{queue:!1,duration:c.animate})):(b===0&&d.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({height:f-h+"%"},{queue:!1,duration:c.animate}))),h=f}):(i=this.value(),j=this._valueMin(),k=this._valueMax(),f=k!==j?(i-j)/(k-j)*100:0,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",this.handle.stop(1,1)[e?"animate":"css"](g,c.animate),b==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"},c.animate),b==="max"&&this.orientation==="horizontal"&&this.range[e?"animate":"css"]({width:100-f+"%"},{queue:!1,duration:c.animate}),b==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},c.animate),b==="max"&&this.orientation==="vertical"&&this.range[e?"animate":"css"]({height:100-f+"%"},{queue:!1,duration:c.animate}))}}),a.extend(a.ui.slider,{version:"1.8.24"})}(jQuery),function(a,b){function e(){return++c}function f(){return++d}var c=0,d=0;a.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:!1,cookie:null,collapsible:!1,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"
      ",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
    • #{label}
    • "},_create:function(){this._tabify(!0)},_setOption:function(a,b){if(a=="selected"){if(this.options.collapsible&&b==this.options.selected)return;this.select(b)}else this.options[a]=b,this._tabify()},_tabId:function(a){return a.title&&a.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+e()},_sanitizeSelector:function(a){return a.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+f());return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(a,b){return{tab:a,panel:b,index:this.anchors.index(a)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function m(b,c){b.css("display",""),!a.support.opacity&&c.opacity&&b[0].style.removeAttribute("filter")}var d=this,e=this.options,f=/^#.+/;this.list=this.element.find("ol,ul").eq(0),this.lis=a(" > li:has(a[href])",this.list),this.anchors=this.lis.map(function(){return a("a",this)[0]}),this.panels=a([]),this.anchors.each(function(b,c){var g=a(c).attr("href"),h=g.split("#")[0],i;h&&(h===location.toString().split("#")[0]||(i=a("base")[0])&&h===i.href)&&(g=c.hash,c.href=g);if(f.test(g))d.panels=d.panels.add(d.element.find(d._sanitizeSelector(g)));else if(g&&g!=="#"){a.data(c,"href.tabs",g),a.data(c,"load.tabs",g.replace(/#.*$/,""));var j=d._tabId(c);c.href="#"+j;var k=d.element.find("#"+j);k.length||(k=a(e.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(d.panels[b-1]||d.list),k.data("destroy.tabs",!0)),d.panels=d.panels.add(k)}else e.disabled.push(b)}),c?(this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"),this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.lis.addClass("ui-state-default ui-corner-top"),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"),e.selected===b?(location.hash&&this.anchors.each(function(a,b){if(b.hash==location.hash)return e.selected=a,!1}),typeof e.selected!="number"&&e.cookie&&(e.selected=parseInt(d._cookie(),10)),typeof e.selected!="number"&&this.lis.filter(".ui-tabs-selected").length&&(e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))),e.selected=e.selected||(this.lis.length?0:-1)):e.selected===null&&(e.selected=-1),e.selected=e.selected>=0&&this.anchors[e.selected]||e.selected<0?e.selected:0,e.disabled=a.unique(e.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(a,b){return d.lis.index(a)}))).sort(),a.inArray(e.selected,e.disabled)!=-1&&e.disabled.splice(a.inArray(e.selected,e.disabled),1),this.panels.addClass("ui-tabs-hide"),this.lis.removeClass("ui-tabs-selected ui-state-active"),e.selected>=0&&this.anchors.length&&(d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash)).removeClass("ui-tabs-hide"),this.lis.eq(e.selected).addClass("ui-tabs-selected ui-state-active"),d.element.queue("tabs",function(){d._trigger("show",null,d._ui(d.anchors[e.selected],d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash))[0]))}),this.load(e.selected)),a(window).bind("unload",function(){d.lis.add(d.anchors).unbind(".tabs"),d.lis=d.anchors=d.panels=null})):e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")),this.element[e.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible"),e.cookie&&this._cookie(e.selected,e.cookie);for(var g=0,h;h=this.lis[g];g++)a(h)[a.inArray(g,e.disabled)!=-1&&!a(h).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");e.cache===!1&&this.anchors.removeData("cache.tabs"),this.lis.add(this.anchors).unbind(".tabs");if(e.event!=="mouseover"){var i=function(a,b){b.is(":not(.ui-state-disabled)")&&b.addClass("ui-state-"+a)},j=function(a,b){b.removeClass("ui-state-"+a)};this.lis.bind("mouseover.tabs",function(){i("hover",a(this))}),this.lis.bind("mouseout.tabs",function(){j("hover",a(this))}),this.anchors.bind("focus.tabs",function(){i("focus",a(this).closest("li"))}),this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var k,l;e.fx&&(a.isArray(e.fx)?(k=e.fx[0],l=e.fx[1]):k=l=e.fx);var n=l?function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.hide().removeClass("ui-tabs-hide").animate(l,l.duration||"normal",function(){m(c,l),d._trigger("show",null,d._ui(b,c[0]))})}:function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.removeClass("ui-tabs-hide"),d._trigger("show",null,d._ui(b,c[0]))},o=k?function(a,b){b.animate(k,k.duration||"normal",function(){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),m(b,k),d.element.dequeue("tabs")})}:function(a,b,c){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),d.element.dequeue("tabs")};this.anchors.bind(e.event+".tabs",function(){var b=this,c=a(b).closest("li"),f=d.panels.filter(":not(.ui-tabs-hide)"),g=d.element.find(d._sanitizeSelector(b.hash));if(c.hasClass("ui-tabs-selected")&&!e.collapsible||c.hasClass("ui-state-disabled")||c.hasClass("ui-state-processing")||d.panels.filter(":animated").length||d._trigger("select",null,d._ui(this,g[0]))===!1)return this.blur(),!1;e.selected=d.anchors.index(this),d.abort();if(e.collapsible){if(c.hasClass("ui-tabs-selected"))return e.selected=-1,e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){o(b,f)}).dequeue("tabs"),this.blur(),!1;if(!f.length)return e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this)),this.blur(),!1}e.cookie&&d._cookie(e.selected,e.cookie);if(g.length)f.length&&d.element.queue("tabs",function(){o(b,f)}),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this));else throw"jQuery UI Tabs: Mismatching fragment identifier.";a.browser.msie&&this.blur()}),this.anchors.bind("click.tabs",function(){return!1})},_getIndex:function(a){return typeof a=="string"&&(a=this.anchors.index(this.anchors.filter("[href$='"+a+"']"))),a},destroy:function(){var b=this.options;return this.abort(),this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs"),this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.anchors.each(function(){var b=a.data(this,"href.tabs");b&&(this.href=b);var c=a(this).unbind(".tabs");a.each(["href","load","cache"],function(a,b){c.removeData(b+".tabs")})}),this.lis.unbind(".tabs").add(this.panels).each(function(){a.data(this,"destroy.tabs")?a(this).remove():a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}),b.cookie&&this._cookie(null,b.cookie),this},add:function(c,d,e){e===b&&(e=this.anchors.length);var f=this,g=this.options,h=a(g.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,d)),i=c.indexOf("#")?this._tabId(a("a",h)[0]):c.replace("#","");h.addClass("ui-state-default ui-corner-top").data("destroy.tabs",!0);var j=f.element.find("#"+i);return j.length||(j=a(g.panelTemplate).attr("id",i).data("destroy.tabs",!0)),j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"),e>=this.lis.length?(h.appendTo(this.list),j.appendTo(this.list[0].parentNode)):(h.insertBefore(this.lis[e]),j.insertBefore(this.panels[e])),g.disabled=a.map(g.disabled,function(a,b){return a>=e?++a:a}),this._tabify(),this.anchors.length==1&&(g.selected=0,h.addClass("ui-tabs-selected ui-state-active"),j.removeClass("ui-tabs-hide"),this.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[0],f.panels[0]))}),this.load(0)),this._trigger("add",null,this._ui(this.anchors[e],this.panels[e])),this},remove:function(b){b=this._getIndex(b);var c=this.options,d=this.lis.eq(b).remove(),e=this.panels.eq(b).remove();return d.hasClass("ui-tabs-selected")&&this.anchors.length>1&&this.select(b+(b+1=b?--a:a}),this._tabify(),this._trigger("remove",null,this._ui(d.find("a")[0],e[0])),this},enable:function(b){b=this._getIndex(b);var c=this.options;if(a.inArray(b,c.disabled)==-1)return;return this.lis.eq(b).removeClass("ui-state-disabled"),c.disabled=a.grep(c.disabled,function(a,c){return a!=b}),this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b])),this},disable:function(a){a=this._getIndex(a);var b=this,c=this.options;return a!=c.selected&&(this.lis.eq(a).addClass("ui-state-disabled"),c.disabled.push(a),c.disabled.sort(),this._trigger("disable",null,this._ui(this.anchors[a],this.panels[a]))),this},select:function(a){a=this._getIndex(a);if(a==-1)if(this.options.collapsible&&this.options.selected!=-1)a=this.options.selected;else return this;return this.anchors.eq(a).trigger(this.options.event+".tabs"),this},load:function(b){b=this._getIndex(b);var c=this,d=this.options,e=this.anchors.eq(b)[0],f=a.data(e,"load.tabs");this.abort();if(!f||this.element.queue("tabs").length!==0&&a.data(e,"cache.tabs")){this.element.dequeue("tabs");return}this.lis.eq(b).addClass("ui-state-processing");if(d.spinner){var g=a("span",e);g.data("label.tabs",g.html()).html(d.spinner)}return this.xhr=a.ajax(a.extend({},d.ajaxOptions,{url:f,success:function(f,g){c.element.find(c._sanitizeSelector(e.hash)).html(f),c._cleanup(),d.cache&&a.data(e,"cache.tabs",!0),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.success(f,g)}catch(h){}},error:function(a,f,g){c._cleanup(),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.error(a,f,b,e)}catch(g){}}})),c.element.dequeue("tabs"),this},abort:function(){return this.element.queue([]),this.panels.stop(!1,!0),this.element.queue("tabs",this.element.queue("tabs").splice(-2,2)),this.xhr&&(this.xhr.abort(),delete this.xhr),this._cleanup(),this},url:function(a,b){return this.anchors.eq(a).removeData("cache.tabs").data("load.tabs",b),this},length:function(){return this.anchors.length}}),a.extend(a.ui.tabs,{version:"1.8.24"}),a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(a,b){var c=this,d=this.options,e=c._rotate||(c._rotate=function(b){clearTimeout(c.rotation),c.rotation=setTimeout(function(){var a=d.selected;c.select(++a" | Add-Content $referencesTempFilePath -Encoding UTF8 + Get-Content $referencesFilePath | Add-Content $referencesTempFilePath + } + else { + # Loop through file and replace old file name with new file name + Get-Content $referencesFilePath | ForEach-Object { $_ -replace $fileNamePattern, $newFileName } > $referencesTempFilePath + } + + # Copy over the new _references.js file + Copy-Item $referencesTempFilePath $referencesFilePath -Force + Remove-Item $referencesTempFilePath -Force +} + +function Remove-Reference($scriptsFolderProjectItem, $fileNamePattern) { + try { + $referencesFileProjectItem = $scriptsFolderProjectItem.ProjectItems.Item("_references.js") + } + catch { + # _references.js file not found + return + } + + if ($referencesFileProjectItem -eq $null) { + return + } + + $referencesFilePath = $referencesFileProjectItem.FileNames(1) + $referencesTempFilePath = Join-Path $env:TEMP "_references.tmp.js" + + if ((Select-String $referencesFilePath -pattern $fileNamePattern).Length -eq 1) { + # Delete the line referencing the file + Get-Content $referencesFilePath | ForEach-Object { if (-not ($_ -match $fileNamePattern)) { $_ } } > $referencesTempFilePath + + # Copy over the new _references.js file + Copy-Item $referencesTempFilePath $referencesFilePath -Force + Remove-Item $referencesTempFilePath -Force + } +} + +# Extract the version number from the file in the package's content\scripts folder +$packageScriptsFolder = Join-Path $installPath Content\Scripts +$juiFileName = Join-Path $packageScriptsFolder "jquery-ui-*.js" | Get-ChildItem -Exclude "*.min.js","*-vsdoc.js" | Split-Path -Leaf +$juiFileNameRegEx = "jquery-ui-((?:\d+\.)?(?:\d+\.)?(?:\d+\.)?(?:\d+)?(?:(?:-\w*)*)).js" +$juiFileName -match $juiFileNameRegEx +$ver = $matches[1] + +# Get the project item for the scripts folder +try { + $scriptsFolderProjectItem = $project.ProjectItems.Item("Scripts") + $projectScriptsFolderPath = $scriptsFolderProjectItem.FileNames(1) +} +catch { + # No Scripts folder + Write-Host "No scripts folder found" +} \ No newline at end of file diff --git a/packages/jQuery.UI.Combined.1.8.24/Tools/install.ps1 b/packages/jQuery.UI.Combined.1.8.24/Tools/install.ps1 new file mode 100644 index 0000000..bee9dbb --- /dev/null +++ b/packages/jQuery.UI.Combined.1.8.24/Tools/install.ps1 @@ -0,0 +1,12 @@ +param($installPath, $toolsPath, $package, $project) + +. (Join-Path $toolsPath common.ps1) + +if ($scriptsFolderProjectItem -eq $null) { + # No Scripts folder + Write-Host "No Scripts folder found" + exit +} + +# Update the _references.js file +AddOrUpdate-Reference $scriptsFolderProjectItem $juiFileNameRegEx $juiFileName \ No newline at end of file diff --git a/packages/jQuery.UI.Combined.1.8.24/Tools/uninstall.ps1 b/packages/jQuery.UI.Combined.1.8.24/Tools/uninstall.ps1 new file mode 100644 index 0000000..cf12868 --- /dev/null +++ b/packages/jQuery.UI.Combined.1.8.24/Tools/uninstall.ps1 @@ -0,0 +1,6 @@ +param($installPath, $toolsPath, $package, $project) + +. (Join-Path $toolsPath common.ps1) + +# Update the _references.js file +Remove-Reference $scriptsFolderProjectItem $juiFileNameRegEx \ No newline at end of file diff --git a/packages/jQuery.UI.Combined.1.8.24/jQuery.UI.Combined.1.8.24.nupkg b/packages/jQuery.UI.Combined.1.8.24/jQuery.UI.Combined.1.8.24.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..beb4eb02d187f40937d35712276f09930a1fda76 GIT binary patch literal 229386 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

      s_?%)R(EXizTE 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 tzE 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

      |5-V$;FN$402t;AzR zpSs$>wCkP=bf!YH`8Hz0F^5Mz!92CWRLPSFCwq=uNQ>6Ig$pnd`eKf3hVw*IVP0h0 z)VZ;;6b-ZPMRvZvD3w*&h@O^uKl@2oTMtk!c#iN!C1r(Q5`9D5()SZF%1y{9mnALa zlm`z(S*Eiqw=Sz`$eS7f$GkI$(*F<^z(_vb%=sa^tQt z)VCrhHH7YcLw~|cm*I9$=qNa77k=4@s3X}2%J=;OJA=e=mZIIfWWu!}7mJ0+BPJP1 zCY0D8u>t`jas!%FsRd%3?-14_1tmC`YEW$5y4v_~)e>5}Gh_qF>qxMpUD2TQ9srWYnism9ae62;T7 z5V!$ogNB>uFpBJCtm=N_rUnDBXvKQ_8BnO&N7-~6CHb^}i)p)xT^LJ5dyM*CNhEzV z%6o_sQN#|W9GM1TFg86WweMYB8bY8h*(N8zsgF?hE$(4htFB5;^3&7}t+$m*>zzx1 z=CRVvd==M6j7y;@YGkxz$kLF$4#iXvYBRb+y_)kz*Y4+^1gmc{wP~d_--^3NRO8r` zvw+gextzyV@l!bQ^Z~IY8ac`Z7Y}gNp`EOuG><5LziUo@$HQ?k$=Z6F0|pDfblhPL zeKX{VmvLxxYz>vim>BQrgAqSJ(xbfZ7^RV1s8f7|M$C@m`(s{r%+u>K^io74Ni4w0 z5cETRbQMP%{K>W1#m9N$xLNp!iT9f&*nDuD9~%m^G#O%S04(TX(|4y>X|BjMdQPq% z2|Zbf7%Ezscr{G*0yRwd+gcU2v`VgPi(rRNC#21i!Ae?^u578W|Fuq3M6e$RuX57W z@I@d}>%fUktd#_}@f>PAlBjh)IsSzoMlyT6nr6U9LzzUppHWgEemJQVzmd_wywgt9 zNr2Ased-i_iBVnj)FpgoJoj^!lslX zp#TGQk+~qq=fx;Lxq@mEz*kj_sBlFGt`yy!%N)s_(2YssT@N-@=8O_xAN{);5?8|k z^<3avSC`@xx^9tn9BK4$idb% z&6O$Yn3K`^n0YHa`d!3wJk4rSz~^Cn#SveSQ$+3f@vOKgfvnTROaZ~RIl7u`UCH)2 z94aD}OX^*&DiH%T(4te-#=pbNzbh_~Xe^PE!reNXpO4$T3o@$yd6}b74v6Pd82FRN zz_efT$`O^p)))Gk?<9d)Amcx*q3fJT4@*2R+z!`bV#Mwh_8DYAByRyG*i9Vpw09mW@r!-G#HjYoB_Q>mGEQzi!t5NH-yNo5zZ6#H=1;Yx%lCPhTt{Ul_ zuz|2N-K6r#jwR%08bK*;6mq)ynS&#?yMb^)Iy=Nw*r|kF(HplSL`-jK+hx&QddlQA z&*Z?rTZ5z?-f;z)S|d%V$Id%+=^}H&(gtskjU&M~*2l|TMSWHYP8i&gW2`&d|Lu$* z{>j7mr-V$nt=am*!1>lNBNOeV{Z7^iTA_$k2u*e97_*cER&1C_{Ckb`3V0Y3NAyl8o+6ZD#;)(%O5Li4!fel&maKsAgPvY-Fyujnpov|Y!WxUS+d4U=E#@BPf{<7nWeu!H{Gb^vt*lw z^`^P(if$ZLp4V#ZQ}ZH>NT6c^m(efyPgN>co9@M%O8kBguRE4d3Rw6(k6@VaOq zaYqg^B=UYc7d*!m4O!idQ@|ZM zgs`T#RU6g+5nF5`-m)dN;m9{O?leDQALHHxz$ln$Q(hxVBREKu+Eu2HY=P7e2^f}u zZH)}Ugg&bbK&MkNd=`LeyTrGpOgd72M@m?AzJ)?7WkSmIB%S5n*tc?qfF;RBZ3&{* zSy5+eDY;AlYMalHxj3ke|Boh5gSIS+-*5c=;r5%Jsy}qYVhQrE;*} zRSq)D4RHen%l}d=X{CV@*!T@aU(52@C=?HpI)rc`w{YnNPbzIPs=4zHHCPC zUHB+NkM@0JFm45#o>vuQaueJ7AYrbFALGLY_@7@QR zZ=~P5%jSD``Fx$hNYTfWXWj3NvM0=4c!yb#85*Z`I^l3_#cr~lFj(4>kNppxanqOq zivy=#mvOAvbn?tt(x_qO4ye)Kox0T4TYhTz+(?QYoq3nb#FCQS#*IEO%pF-@+y9EK z?SGlI-LY%CW7aly4tZ@OvZqy78CQ3CvxXaSkchF>yY=e;Z22hyu(9UT(Ix0gp+D8v z%eWaldhbBmHk^(s7!IE&k7lPKcWpNU(K1IBn7<93+$2SetjqgQ$anr#c%mk52(Qxz zIxkhO>Vuq@2+-g0z(jig*E=!q#8bt%DQA9I551rFlC%e;_H6V6li9*qrO-!OHK}4* zRv0xI{c+Vy)=J5NQ_5!ZuPGHrJn4qS3bv8A#ESI5gABl{Bgy6 zSPeW`pRlDYx1H-u)ULjyq}ZC)gS+~q&${q&HZPeUq;An-9A&A>2^e^2DgvEIM2}6U z3E=U#$DMy3BzNuv1%t$iHcj}HUJ`Fl`^y@UzTcZ#U>%B2BJIWfRepC9Nt;lK4tC3) zb_~Pt98RDlu#{a%hi7cNNQaobC%=F85;ulWDta^E4eRY#Cn=2Zzg}(&nx;+X;Icwu z>Yxl`sHInA(4ax?U6vcReh{NqHtz8bXA~M%tbeLbVi=8qBD1r5>j=*bcSvWDt`BRS zCwNUT+&0uX1-fU`1&2$ove8TKnq%nnYAFbK0v!EC2fXmM!Xv=uRqLV9P3{SM$pM`2 z3v`5Km(>wk6KOUc>rhAX4smJHnRSlQ)Cu-!*6pFRA*ZW{SD7ywRzc^uk3QM?{PXUn z$ronhr&r@4u+@RsX*tW+DrV~+8;n;Cb6)R5yeKR$z0yk6dGm|ITQ2cJP4WfLDp$T7 z=0_|9Tg;2L&$3hd4)=VX58K`7_oUqxqITnhCWEMD&4{Ig@YX|A1?huli#eqgLjg|Z zx>XJ>2T!Sq5@nXolw7=gmspeAe!DJExHD<8qtZpLhSiUS(U9EqOCp&G<5P#ovbHEp zpUb}c;ns*Rb+hLIE(scLiMyQO08K%pR~eD4!v~0>*acxEsKj}HsAp5@^Tkp1hg_W{ zkJ1%fa+n@Gjq}VQI6$KPO&{}gSuQkvRjSLxSL$646dwQOi`5L?!yigSdkPv{>vVXd zBh22@33TmahV&X1EY4A;po;M+?r{)-aQCPbG65QWOBfXIdSaynk1s(-WoL@s84a=XcG=i)-P z1w$%s^^!Kz z^#GOC^BYE~tbV3*X*0>5Tz z%Wh6TQ3yjINsD=b9#d{S#vQSjq_a~}jFw&U#-|Pgk9oVH+8oQ&N~c#P981(q=(2+a^{DQE)3on;TL_rka&{FN&ZOS${>f#(oM+QREJA+X2l2f02;dgfBEU~3xhmhOVM=m~(~JiQZRpfW z2m4YDLrhSmAO7}rhkv_o4r-!_Of|43gJRcFH@f!h^tjVb?qF+YYRZ4)6K@KNy`ahE z$BFcZ&%;)tLuQrS9s8SNNcEDvd-veKWC7gny-Pp4K|i~des(`tKYKwxdzF6nV*PYc zQUkY_umLjEbYLHnEh}Y*^C`;cu{sTM5Dq7H4|3u%iaDb{ky0fDN$bW z@Wl%Zzm{<67X15Je@{MO#QYK{e4r@rsJUo~MFf(uCOQrEr8;GOgU{VgKo95u{v*q# z$!URWv6#&BF{(5vYE?S%3Vzmel{^Ph-k?@BXK!tk$cSFUq3v4~SVGY={j__;gVNBk zGO!i`YIPHh*Ln=k#cLTT4jO~CR%o~u>nARNJjl z(${C{>m2HT4s}1j3*SD|FX!ngY!55}b`bPjjPo~{fcyL&w&{K1niXs>K}5;!C#I)j zHayEm0Pf!1-aVM&&L{e1mW{L*SG!DsVgmSkcVSRaeRpq9KfTF|F|dt?yPtfHtGT<2 zA5Ip-vocS)U$@4mz`b(O-tIjH?w4Wjb1s3al%E!Z!_V%~G^tFMg?9Sx4o(D1i9X}a z*!}D-!2A@yx-YyVdwZYQ{i83^>Fy`+>F(zM?i2e7_6ugwlmByHrupQxtmEfLn#jR7Yv!6;A zW{_X(!KTt6r;8a-rrLvmblYYNY3q4(1g^}-Kwv|qFZO!!e^?CYW1bBHLKjM_%Rmqe z5*t)V<3EZS|Ly@G`9G8ycfrUXC>Q=bB^)}BnPqdFw;X;aCQ8N#-UlFR{xi=m@DV$Re(4j@KxQty3L?NmK@+`%VFW3v zf&-jn7cZp4w-luOb#{gS4B-(QBXxq09(imWzs4xvz!8w^PATJ@7PBcDx@15%;KR+O z@M3d-D4%$oxqe{U-QQYr zP=0a%1M2i=8Ho`)+dpr0e!l2#pZ2`aB*jpEfD_Qq6Ue3{>Y$+Jom#yE5A)NRFx&c8bK7!ZvfE)_ZNby9hYJ??>d4D-g(YOffyLndd zPIXvpyLp_V)hUso*yzb)8ck>0ebq<+2$qH

      3oQYOk2dVyN{Z1>zUCWgaA4&0|S2 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

      w{n1Wx%$MkDEr4E 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

      SO=@NK5f2syF(#W#1YO_8j?8{YE80?7N% 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 literal 0 HcmV?d00001 diff --git a/packages/jQuery.Validation.1.10.0/Content/Scripts/jquery.validate-vsdoc.js b/packages/jQuery.Validation.1.10.0/Content/Scripts/jquery.validate-vsdoc.js new file mode 100644 index 0000000..33004de --- /dev/null +++ b/packages/jQuery.Validation.1.10.0/Content/Scripts/jquery.validate-vsdoc.js @@ -0,0 +1,1307 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. Insofar as a script file is dual licensed under GPL, + * Microsoft neither took the code under GPL nor distributes it thereunder but + * under the terms set out in this paragraph. All notices and licenses + * below are for informational purposes only. + * + * jQuery validation plugin 1.10.0; Copyright (c) 2006 - 2011 Jörn Zaefferer; http://opensource.org/licenses/mit-license.php + * + * NUGET: END LICENSE TEXT */ +/* +* This file has been commented to support Visual Studio Intellisense. +* You should not use this file at runtime inside the browser--it is only +* intended to be used only for design-time IntelliSense. Please use the +* standard jQuery library for all production use. +* +* Comment version: 1.10.0 +*/ + +/* +* Note: While Microsoft is not the author of this file, Microsoft is +* offering you a license subject to the terms of the Microsoft Software +* License Terms for Microsoft ASP.NET Model View Controller 3. +* Microsoft reserves all other rights. The notices below are provided +* for informational purposes only and are not the license terms under +* which Microsoft distributed this file. +* +* jQuery validation plugin 1.10.0 +* +* http://bassistance.de/jquery-plugins/jquery-plugin-validation/ +* http://docs.jquery.com/Plugins/Validation +* +* Copyright (c) 2006 - 2011 Jörn Zaefferer +* +*/ + +(function($) { + +$.extend($.fn, { + // http://docs.jquery.com/Plugins/Validation/validate + validate: function( options ) { + ///

      + /// Validates the selected form. This method sets up event handlers for submit, focus, + /// keyup, blur and click to trigger validation of the entire form or individual + /// elements. Each one can be disabled, see the onxxx options (onsubmit, onfocusout, + /// onkeyup, onclick). focusInvalid focuses elements when submitting a invalid form. + /// + /// + /// A set of key/value pairs that configure the validate. All options are optional. + /// + + // if nothing is selected, return nothing; can't chain anyway + if (!this.length) { + options && options.debug && window.console && console.warn( "nothing selected, can't validate, returning nothing" ); + return; + } + + // check if a validator for this form was already created + var validator = $.data(this[0], 'validator'); + if ( validator ) { + return validator; + } + + validator = new $.validator( options, this[0] ); + $.data(this[0], 'validator', validator); + + if ( validator.settings.onsubmit ) { + + // allow suppresing validation by adding a cancel class to the submit button + this.find("input, button").filter(".cancel").click(function() { + validator.cancelSubmit = true; + }); + + // when a submitHandler is used, capture the submitting button + if (validator.settings.submitHandler) { + this.find("input, button").filter(":submit").click(function() { + validator.submitButton = this; + }); + } + + // validate the form on submit + this.submit( function( event ) { + if ( validator.settings.debug ) + // prevent form submit to be able to see console output + event.preventDefault(); + + function handle() { + if ( validator.settings.submitHandler ) { + if (validator.submitButton) { + // insert a hidden input as a replacement for the missing submit button + var hidden = $("").attr("name", validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm); + } + validator.settings.submitHandler.call( validator, validator.currentForm ); + if (validator.submitButton) { + // and clean up afterwards; thanks to no-block-scope, hidden can be referenced + hidden.remove(); + } + return false; + } + return true; + } + + // prevent submit for invalid forms or custom submit handlers + if ( validator.cancelSubmit ) { + validator.cancelSubmit = false; + return handle(); + } + if ( validator.form() ) { + if ( validator.pendingRequest ) { + validator.formSubmitted = true; + return false; + } + return handle(); + } else { + validator.focusInvalid(); + return false; + } + }); + } + + return validator; + }, + // http://docs.jquery.com/Plugins/Validation/valid + valid: function() { + /// + /// Checks if the selected form is valid or if all selected elements are valid. + /// validate() needs to be called on the form before checking it using this method. + /// + /// + + if ( $(this[0]).is('form')) { + return this.validate().form(); + } else { + var valid = true; + var validator = $(this[0].form).validate(); + this.each(function() { + valid &= validator.element(this); + }); + return valid; + } + }, + // attributes: space seperated list of attributes to retrieve and remove + removeAttrs: function(attributes) { + /// + /// Remove the specified attributes from the first matched element and return them. + /// + /// + /// A space-seperated list of attribute names to remove. + /// + + var result = {}, + $element = this; + $.each(attributes.split(/\s/), function(index, value) { + result[value] = $element.attr(value); + $element.removeAttr(value); + }); + return result; + }, + // http://docs.jquery.com/Plugins/Validation/rules + rules: function(command, argument) { + /// + /// Return the validations rules for the first selected element. + /// + /// + /// Can be either "add" or "remove". + /// + /// + /// A list of rules to add or remove. + /// + + var element = this[0]; + + if (command) { + var settings = $.data(element.form, 'validator').settings; + var staticRules = settings.rules; + var existingRules = $.validator.staticRules(element); + switch(command) { + case "add": + $.extend(existingRules, $.validator.normalizeRule(argument)); + staticRules[element.name] = existingRules; + if (argument.messages) + settings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages ); + break; + case "remove": + if (!argument) { + delete staticRules[element.name]; + return existingRules; + } + var filtered = {}; + $.each(argument.split(/\s/), function(index, method) { + filtered[method] = existingRules[method]; + delete existingRules[method]; + }); + return filtered; + } + } + + var data = $.validator.normalizeRules( + $.extend( + {}, + $.validator.metadataRules(element), + $.validator.classRules(element), + $.validator.attributeRules(element), + $.validator.staticRules(element) + ), element); + + // make sure required is at front + if (data.required) { + var param = data.required; + delete data.required; + data = $.extend({required: param}, data); + } + + return data; + } +}); + +// Custom selectors +$.extend($.expr[":"], { + // http://docs.jquery.com/Plugins/Validation/blank + blank: function(a) {return !$.trim("" + a.value);}, + // http://docs.jquery.com/Plugins/Validation/filled + filled: function(a) {return !!$.trim("" + a.value);}, + // http://docs.jquery.com/Plugins/Validation/unchecked + unchecked: function(a) {return !a.checked;} +}); + +// constructor for validator +$.validator = function( options, form ) { + this.settings = $.extend( true, {}, $.validator.defaults, options ); + this.currentForm = form; + this.init(); +}; + +$.validator.format = function(source, params) { + /// + /// Replaces {n} placeholders with arguments. + /// One or more arguments can be passed, in addition to the string template itself, to insert + /// into the string. + /// + /// + /// The string to format. + /// + /// + /// The first argument to insert, or an array of Strings to insert + /// + /// + + if ( arguments.length == 1 ) + return function() { + var args = $.makeArray(arguments); + args.unshift(source); + return $.validator.format.apply( this, args ); + }; + if ( arguments.length > 2 && params.constructor != Array ) { + params = $.makeArray(arguments).slice(1); + } + if ( params.constructor != Array ) { + params = [ params ]; + } + $.each(params, function(i, n) { + source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n); + }); + return source; +}; + +$.extend($.validator, { + + defaults: { + messages: {}, + groups: {}, + rules: {}, + errorClass: "error", + validClass: "valid", + errorElement: "label", + focusInvalid: true, + errorContainer: $( [] ), + errorLabelContainer: $( [] ), + onsubmit: true, + ignore: [], + ignoreTitle: false, + onfocusin: function(element) { + this.lastActive = element; + + // hide error label and remove error class on focus if enabled + if ( this.settings.focusCleanup && !this.blockFocusCleanup ) { + this.settings.unhighlight && this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass ); + this.addWrapper(this.errorsFor(element)).hide(); + } + }, + onfocusout: function(element) { + if ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) { + this.element(element); + } + }, + onkeyup: function(element) { + if ( element.name in this.submitted || element == this.lastElement ) { + this.element(element); + } + }, + onclick: function(element) { + // click on selects, radiobuttons and checkboxes + if ( element.name in this.submitted ) + this.element(element); + // or option elements, check parent select in that case + else if (element.parentNode.name in this.submitted) + this.element(element.parentNode); + }, + highlight: function( element, errorClass, validClass ) { + $(element).addClass(errorClass).removeClass(validClass); + }, + unhighlight: function( element, errorClass, validClass ) { + $(element).removeClass(errorClass).addClass(validClass); + } + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/setDefaults + setDefaults: function(settings) { + /// + /// Modify default settings for validation. + /// Accepts everything that Plugins/Validation/validate accepts. + /// + /// + /// Options to set as default. + /// + + $.extend( $.validator.defaults, settings ); + }, + + messages: { + required: "This field is required.", + remote: "Please fix this field.", + email: "Please enter a valid email address.", + url: "Please enter a valid URL.", + date: "Please enter a valid date.", + dateISO: "Please enter a valid date (ISO).", + number: "Please enter a valid number.", + digits: "Please enter only digits.", + creditcard: "Please enter a valid credit card number.", + equalTo: "Please enter the same value again.", + accept: "Please enter a value with a valid extension.", + maxlength: $.validator.format("Please enter no more than {0} characters."), + minlength: $.validator.format("Please enter at least {0} characters."), + rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."), + range: $.validator.format("Please enter a value between {0} and {1}."), + max: $.validator.format("Please enter a value less than or equal to {0}."), + min: $.validator.format("Please enter a value greater than or equal to {0}.") + }, + + autoCreateRanges: false, + + prototype: { + + init: function() { + this.labelContainer = $(this.settings.errorLabelContainer); + this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm); + this.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer ); + this.submitted = {}; + this.valueCache = {}; + this.pendingRequest = 0; + this.pending = {}; + this.invalid = {}; + this.reset(); + + var groups = (this.groups = {}); + $.each(this.settings.groups, function(key, value) { + $.each(value.split(/\s/), function(index, name) { + groups[name] = key; + }); + }); + var rules = this.settings.rules; + $.each(rules, function(key, value) { + rules[key] = $.validator.normalizeRule(value); + }); + + function delegate(event) { + var validator = $.data(this[0].form, "validator"), + eventType = "on" + event.type.replace(/^validate/, ""); + validator.settings[eventType] && validator.settings[eventType].call(validator, this[0] ); + } + $(this.currentForm) + .validateDelegate(":text, :password, :file, select, textarea", "focusin focusout keyup", delegate) + .validateDelegate(":radio, :checkbox, select, option", "click", delegate); + + if (this.settings.invalidHandler) + $(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler); + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/form + form: function() { + /// + /// Validates the form, returns true if it is valid, false otherwise. + /// This behaves as a normal submit event, but returns the result. + /// + /// + + this.checkForm(); + $.extend(this.submitted, this.errorMap); + this.invalid = $.extend({}, this.errorMap); + if (!this.valid()) + $(this.currentForm).triggerHandler("invalid-form", [this]); + this.showErrors(); + return this.valid(); + }, + + checkForm: function() { + this.prepareForm(); + for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) { + this.check( elements[i] ); + } + return this.valid(); + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/element + element: function( element ) { + /// + /// Validates a single element, returns true if it is valid, false otherwise. + /// This behaves as validation on blur or keyup, but returns the result. + /// + /// + /// An element to validate, must be inside the validated form. + /// + /// + + element = this.clean( element ); + this.lastElement = element; + this.prepareElement( element ); + this.currentElements = $(element); + var result = this.check( element ); + if ( result ) { + delete this.invalid[element.name]; + } else { + this.invalid[element.name] = true; + } + if ( !this.numberOfInvalids() ) { + // Hide error containers on last error + this.toHide = this.toHide.add( this.containers ); + } + this.showErrors(); + return result; + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/showErrors + showErrors: function(errors) { + /// + /// Show the specified messages. + /// Keys have to refer to the names of elements, values are displayed for those elements, using the configured error placement. + /// + /// + /// One or more key/value pairs of input names and messages. + /// + + if(errors) { + // add items to error list and map + $.extend( this.errorMap, errors ); + this.errorList = []; + for ( var name in errors ) { + this.errorList.push({ + message: errors[name], + element: this.findByName(name)[0] + }); + } + // remove items from success list + this.successList = $.grep( this.successList, function(element) { + return !(element.name in errors); + }); + } + this.settings.showErrors + ? this.settings.showErrors.call( this, this.errorMap, this.errorList ) + : this.defaultShowErrors(); + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/resetForm + resetForm: function() { + /// + /// Resets the controlled form. + /// Resets input fields to their original value (requires form plugin), removes classes + /// indicating invalid elements and hides error messages. + /// + + if ( $.fn.resetForm ) + $( this.currentForm ).resetForm(); + this.submitted = {}; + this.prepareForm(); + this.hideErrors(); + this.elements().removeClass( this.settings.errorClass ); + }, + + numberOfInvalids: function() { + /// + /// Returns the number of invalid fields. + /// This depends on the internal validator state. It covers all fields only after + /// validating the complete form (on submit or via $("form").valid()). After validating + /// a single element, only that element is counted. Most useful in combination with the + /// invalidHandler-option. + /// + /// + + return this.objectLength(this.invalid); + }, + + objectLength: function( obj ) { + var count = 0; + for ( var i in obj ) + count++; + return count; + }, + + hideErrors: function() { + this.addWrapper( this.toHide ).hide(); + }, + + valid: function() { + return this.size() == 0; + }, + + size: function() { + return this.errorList.length; + }, + + focusInvalid: function() { + if( this.settings.focusInvalid ) { + try { + $(this.findLastActive() || this.errorList.length && this.errorList[0].element || []) + .filter(":visible") + .focus() + // manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find + .trigger("focusin"); + } catch(e) { + // ignore IE throwing errors when focusing hidden elements + } + } + }, + + findLastActive: function() { + var lastActive = this.lastActive; + return lastActive && $.grep(this.errorList, function(n) { + return n.element.name == lastActive.name; + }).length == 1 && lastActive; + }, + + elements: function() { + var validator = this, + rulesCache = {}; + + // select all valid inputs inside the form (no submit or reset buttons) + // workaround $Query([]).add until http://dev.jquery.com/ticket/2114 is solved + return $([]).add(this.currentForm.elements) + .filter(":input") + .not(":submit, :reset, :image, [disabled]") + .not( this.settings.ignore ) + .filter(function() { + !this.name && validator.settings.debug && window.console && console.error( "%o has no name assigned", this); + + // select only the first element for each name, and only those with rules specified + if ( this.name in rulesCache || !validator.objectLength($(this).rules()) ) + return false; + + rulesCache[this.name] = true; + return true; + }); + }, + + clean: function( selector ) { + return $( selector )[0]; + }, + + errors: function() { + return $( this.settings.errorElement + "." + this.settings.errorClass, this.errorContext ); + }, + + reset: function() { + this.successList = []; + this.errorList = []; + this.errorMap = {}; + this.toShow = $([]); + this.toHide = $([]); + this.currentElements = $([]); + }, + + prepareForm: function() { + this.reset(); + this.toHide = this.errors().add( this.containers ); + }, + + prepareElement: function( element ) { + this.reset(); + this.toHide = this.errorsFor(element); + }, + + check: function( element ) { + element = this.clean( element ); + + // if radio/checkbox, validate first element in group instead + if (this.checkable(element)) { + element = this.findByName(element.name).not(this.settings.ignore)[0]; + } + + var rules = $(element).rules(); + var dependencyMismatch = false; + for (var method in rules) { + var rule = { method: method, parameters: rules[method] }; + try { + var result = $.validator.methods[method].call( this, element.value.replace(/\r/g, ""), element, rule.parameters ); + + // if a method indicates that the field is optional and therefore valid, + // don't mark it as valid when there are no other rules + if ( result == "dependency-mismatch" ) { + dependencyMismatch = true; + continue; + } + dependencyMismatch = false; + + if ( result == "pending" ) { + this.toHide = this.toHide.not( this.errorsFor(element) ); + return; + } + + if( !result ) { + this.formatAndAdd( element, rule ); + return false; + } + } catch(e) { + this.settings.debug && window.console && console.log("exception occured when checking element " + element.id + + ", check the '" + rule.method + "' method", e); + throw e; + } + } + if (dependencyMismatch) + return; + if ( this.objectLength(rules) ) + this.successList.push(element); + return true; + }, + + // return the custom message for the given element and validation method + // specified in the element's "messages" metadata + customMetaMessage: function(element, method) { + if (!$.metadata) + return; + + var meta = this.settings.meta + ? $(element).metadata()[this.settings.meta] + : $(element).metadata(); + + return meta && meta.messages && meta.messages[method]; + }, + + // return the custom message for the given element name and validation method + customMessage: function( name, method ) { + var m = this.settings.messages[name]; + return m && (m.constructor == String + ? m + : m[method]); + }, + + // return the first defined argument, allowing empty strings + findDefined: function() { + for(var i = 0; i < arguments.length; i++) { + if (arguments[i] !== undefined) + return arguments[i]; + } + return undefined; + }, + + defaultMessage: function( element, method) { + return this.findDefined( + this.customMessage( element.name, method ), + this.customMetaMessage( element, method ), + // title is never undefined, so handle empty string as undefined + !this.settings.ignoreTitle && element.title || undefined, + $.validator.messages[method], + "Warning: No message defined for " + element.name + "" + ); + }, + + formatAndAdd: function( element, rule ) { + var message = this.defaultMessage( element, rule.method ), + theregex = /\$?\{(\d+)\}/g; + if ( typeof message == "function" ) { + message = message.call(this, rule.parameters, element); + } else if (theregex.test(message)) { + message = jQuery.format(message.replace(theregex, '{$1}'), rule.parameters); + } + this.errorList.push({ + message: message, + element: element + }); + + this.errorMap[element.name] = message; + this.submitted[element.name] = message; + }, + + addWrapper: function(toToggle) { + if ( this.settings.wrapper ) + toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) ); + return toToggle; + }, + + defaultShowErrors: function() { + for ( var i = 0; this.errorList[i]; i++ ) { + var error = this.errorList[i]; + this.settings.highlight && this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass ); + this.showLabel( error.element, error.message ); + } + if( this.errorList.length ) { + this.toShow = this.toShow.add( this.containers ); + } + if (this.settings.success) { + for ( var i = 0; this.successList[i]; i++ ) { + this.showLabel( this.successList[i] ); + } + } + if (this.settings.unhighlight) { + for ( var i = 0, elements = this.validElements(); elements[i]; i++ ) { + this.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass ); + } + } + this.toHide = this.toHide.not( this.toShow ); + this.hideErrors(); + this.addWrapper( this.toShow ).show(); + }, + + validElements: function() { + return this.currentElements.not(this.invalidElements()); + }, + + invalidElements: function() { + return $(this.errorList).map(function() { + return this.element; + }); + }, + + showLabel: function(element, message) { + var label = this.errorsFor( element ); + if ( label.length ) { + // refresh error/success class + label.removeClass().addClass( this.settings.errorClass ); + + // check if we have a generated label, replace the message then + label.attr("generated") && label.html(message); + } else { + // create label + label = $("<" + this.settings.errorElement + "/>") + .attr({"for": this.idOrName(element), generated: true}) + .addClass(this.settings.errorClass) + .html(message || ""); + if ( this.settings.wrapper ) { + // make sure the element is visible, even in IE + // actually showing the wrapped element is handled elsewhere + label = label.hide().show().wrap("<" + this.settings.wrapper + "/>").parent(); + } + if ( !this.labelContainer.append(label).length ) + this.settings.errorPlacement + ? this.settings.errorPlacement(label, $(element) ) + : label.insertAfter(element); + } + if ( !message && this.settings.success ) { + label.text(""); + typeof this.settings.success == "string" + ? label.addClass( this.settings.success ) + : this.settings.success( label ); + } + this.toShow = this.toShow.add(label); + }, + + errorsFor: function(element) { + var name = this.idOrName(element); + return this.errors().filter(function() { + return $(this).attr('for') == name; + }); + }, + + idOrName: function(element) { + return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name); + }, + + checkable: function( element ) { + return /radio|checkbox/i.test(element.type); + }, + + findByName: function( name ) { + // select by name and filter by form for performance over form.find("[name=...]") + var form = this.currentForm; + return $(document.getElementsByName(name)).map(function(index, element) { + return element.form == form && element.name == name && element || null; + }); + }, + + getLength: function(value, element) { + switch( element.nodeName.toLowerCase() ) { + case 'select': + return $("option:selected", element).length; + case 'input': + if( this.checkable( element) ) + return this.findByName(element.name).filter(':checked').length; + } + return value.length; + }, + + depend: function(param, element) { + return this.dependTypes[typeof param] + ? this.dependTypes[typeof param](param, element) + : true; + }, + + dependTypes: { + "boolean": function(param, element) { + return param; + }, + "string": function(param, element) { + return !!$(param, element.form).length; + }, + "function": function(param, element) { + return param(element); + } + }, + + optional: function(element) { + return !$.validator.methods.required.call(this, $.trim(element.value), element) && "dependency-mismatch"; + }, + + startRequest: function(element) { + if (!this.pending[element.name]) { + this.pendingRequest++; + this.pending[element.name] = true; + } + }, + + stopRequest: function(element, valid) { + this.pendingRequest--; + // sometimes synchronization fails, make sure pendingRequest is never < 0 + if (this.pendingRequest < 0) + this.pendingRequest = 0; + delete this.pending[element.name]; + if ( valid && this.pendingRequest == 0 && this.formSubmitted && this.form() ) { + $(this.currentForm).submit(); + this.formSubmitted = false; + } else if (!valid && this.pendingRequest == 0 && this.formSubmitted) { + $(this.currentForm).triggerHandler("invalid-form", [this]); + this.formSubmitted = false; + } + }, + + previousValue: function(element) { + return $.data(element, "previousValue") || $.data(element, "previousValue", { + old: null, + valid: true, + message: this.defaultMessage( element, "remote" ) + }); + } + + }, + + classRuleSettings: { + required: {required: true}, + email: {email: true}, + url: {url: true}, + date: {date: true}, + dateISO: {dateISO: true}, + dateDE: {dateDE: true}, + number: {number: true}, + numberDE: {numberDE: true}, + digits: {digits: true}, + creditcard: {creditcard: true} + }, + + addClassRules: function(className, rules) { + /// + /// Add a compound class method - useful to refactor common combinations of rules into a single + /// class. + /// + /// + /// The name of the class rule to add + /// + /// + /// The compound rules + /// + + className.constructor == String ? + this.classRuleSettings[className] = rules : + $.extend(this.classRuleSettings, className); + }, + + classRules: function(element) { + var rules = {}; + var classes = $(element).attr('class'); + classes && $.each(classes.split(' '), function() { + if (this in $.validator.classRuleSettings) { + $.extend(rules, $.validator.classRuleSettings[this]); + } + }); + return rules; + }, + + attributeRules: function(element) { + var rules = {}; + var $element = $(element); + + for (var method in $.validator.methods) { + var value = $element.attr(method); + if (value) { + rules[method] = value; + } + } + + // maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs + if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) { + delete rules.maxlength; + } + + return rules; + }, + + metadataRules: function(element) { + if (!$.metadata) return {}; + + var meta = $.data(element.form, 'validator').settings.meta; + return meta ? + $(element).metadata()[meta] : + $(element).metadata(); + }, + + staticRules: function(element) { + var rules = {}; + var validator = $.data(element.form, 'validator'); + if (validator.settings.rules) { + rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {}; + } + return rules; + }, + + normalizeRules: function(rules, element) { + // handle dependency check + $.each(rules, function(prop, val) { + // ignore rule when param is explicitly false, eg. required:false + if (val === false) { + delete rules[prop]; + return; + } + if (val.param || val.depends) { + var keepRule = true; + switch (typeof val.depends) { + case "string": + keepRule = !!$(val.depends, element.form).length; + break; + case "function": + keepRule = val.depends.call(element, element); + break; + } + if (keepRule) { + rules[prop] = val.param !== undefined ? val.param : true; + } else { + delete rules[prop]; + } + } + }); + + // evaluate parameters + $.each(rules, function(rule, parameter) { + rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter; + }); + + // clean number parameters + $.each(['minlength', 'maxlength', 'min', 'max'], function() { + if (rules[this]) { + rules[this] = Number(rules[this]); + } + }); + $.each(['rangelength', 'range'], function() { + if (rules[this]) { + rules[this] = [Number(rules[this][0]), Number(rules[this][1])]; + } + }); + + if ($.validator.autoCreateRanges) { + // auto-create ranges + if (rules.min && rules.max) { + rules.range = [rules.min, rules.max]; + delete rules.min; + delete rules.max; + } + if (rules.minlength && rules.maxlength) { + rules.rangelength = [rules.minlength, rules.maxlength]; + delete rules.minlength; + delete rules.maxlength; + } + } + + // To support custom messages in metadata ignore rule methods titled "messages" + if (rules.messages) { + delete rules.messages; + } + + return rules; + }, + + // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true} + normalizeRule: function(data) { + if( typeof data == "string" ) { + var transformed = {}; + $.each(data.split(/\s/), function() { + transformed[this] = true; + }); + data = transformed; + } + return data; + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/addMethod + addMethod: function(name, method, message) { + /// + /// Add a custom validation method. It must consist of a name (must be a legal javascript + /// identifier), a javascript based function and a default string message. + /// + /// + /// The name of the method, used to identify and referencing it, must be a valid javascript + /// identifier + /// + /// + /// The actual method implementation, returning true if an element is valid + /// + /// + /// (Optional) The default message to display for this method. Can be a function created by + /// jQuery.validator.format(value). When undefined, an already existing message is used + /// (handy for localization), otherwise the field-specific messages have to be defined. + /// + + $.validator.methods[name] = method; + $.validator.messages[name] = message != undefined ? message : $.validator.messages[name]; + if (method.length < 3) { + $.validator.addClassRules(name, $.validator.normalizeRule(name)); + } + }, + + methods: { + + // http://docs.jquery.com/Plugins/Validation/Methods/required + required: function(value, element, param) { + // check if dependency is met + if ( !this.depend(param, element) ) + return "dependency-mismatch"; + switch( element.nodeName.toLowerCase() ) { + case 'select': + // could be an array for select-multiple or a string, both are fine this way + var val = $(element).val(); + return val && val.length > 0; + case 'input': + if ( this.checkable(element) ) + return this.getLength(value, element) > 0; + default: + return $.trim(value).length > 0; + } + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/remote + remote: function(value, element, param) { + if ( this.optional(element) ) + return "dependency-mismatch"; + + var previous = this.previousValue(element); + if (!this.settings.messages[element.name] ) + this.settings.messages[element.name] = {}; + previous.originalMessage = this.settings.messages[element.name].remote; + this.settings.messages[element.name].remote = previous.message; + + param = typeof param == "string" && {url:param} || param; + + if ( this.pending[element.name] ) { + return "pending"; + } + if ( previous.old === value ) { + return previous.valid; + } + + previous.old = value; + var validator = this; + this.startRequest(element); + var data = {}; + data[element.name] = value; + $.ajax($.extend(true, { + url: param, + mode: "abort", + port: "validate" + element.name, + dataType: "json", + data: data, + success: function(response) { + validator.settings.messages[element.name].remote = previous.originalMessage; + var valid = response === true; + if ( valid ) { + var submitted = validator.formSubmitted; + validator.prepareElement(element); + validator.formSubmitted = submitted; + validator.successList.push(element); + validator.showErrors(); + } else { + var errors = {}; + var message = response || validator.defaultMessage(element, "remote"); + errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message; + validator.showErrors(errors); + } + previous.valid = valid; + validator.stopRequest(element, valid); + } + }, param)); + return "pending"; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/minlength + minlength: function(value, element, param) { + return this.optional(element) || this.getLength($.trim(value), element) >= param; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/maxlength + maxlength: function(value, element, param) { + return this.optional(element) || this.getLength($.trim(value), element) <= param; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/rangelength + rangelength: function(value, element, param) { + var length = this.getLength($.trim(value), element); + return this.optional(element) || ( length >= param[0] && length <= param[1] ); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/min + min: function( value, element, param ) { + return this.optional(element) || value >= param; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/max + max: function( value, element, param ) { + return this.optional(element) || value <= param; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/range + range: function( value, element, param ) { + return this.optional(element) || ( value >= param[0] && value <= param[1] ); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/email + email: function(value, element) { + // contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/ + return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/url + url: function(value, element) { + // contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/ + return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/date + date: function(value, element) { + return this.optional(element) || !/Invalid|NaN/.test(new Date(value)); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/dateISO + dateISO: function(value, element) { + return this.optional(element) || /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/number + number: function(value, element) { + return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/digits + digits: function(value, element) { + return this.optional(element) || /^\d+$/.test(value); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/creditcard + // based on http://en.wikipedia.org/wiki/Luhn + creditcard: function(value, element) { + if ( this.optional(element) ) + return "dependency-mismatch"; + // accept only digits and dashes + if (/[^0-9-]+/.test(value)) + return false; + var nCheck = 0, + nDigit = 0, + bEven = false; + + value = value.replace(/\D/g, ""); + + for (var n = value.length - 1; n >= 0; n--) { + var cDigit = value.charAt(n); + var nDigit = parseInt(cDigit, 10); + if (bEven) { + if ((nDigit *= 2) > 9) + nDigit -= 9; + } + nCheck += nDigit; + bEven = !bEven; + } + + return (nCheck % 10) == 0; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/accept + accept: function(value, element, param) { + param = typeof param == "string" ? param.replace(/,/g, '|') : "png|jpe?g|gif"; + return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i")); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/equalTo + equalTo: function(value, element, param) { + // bind to the blur event of the target in order to revalidate whenever the target field is updated + // TODO find a way to bind the event just once, avoiding the unbind-rebind overhead + var target = $(param).unbind(".validate-equalTo").bind("blur.validate-equalTo", function() { + $(element).valid(); + }); + return value == target.val(); + } + + } + +}); + +// deprecated, use $.validator.format instead +$.format = $.validator.format; + +})(jQuery); + +// ajax mode: abort +// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]}); +// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort() +;(function($) { + var pendingRequests = {}; + // Use a prefilter if available (1.5+) + if ( $.ajaxPrefilter ) { + $.ajaxPrefilter(function(settings, _, xhr) { + var port = settings.port; + if (settings.mode == "abort") { + if ( pendingRequests[port] ) { + pendingRequests[port].abort(); + } pendingRequests[port] = xhr; + } + }); + } else { + // Proxy ajax + var ajax = $.ajax; + $.ajax = function(settings) { + var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode, + port = ( "port" in settings ? settings : $.ajaxSettings ).port; + if (mode == "abort") { + if ( pendingRequests[port] ) { + pendingRequests[port].abort(); + } + + return (pendingRequests[port] = ajax.apply(this, arguments)); + } + return ajax.apply(this, arguments); + }; + } +})(jQuery); + +// provides cross-browser focusin and focusout events +// IE has native support, in other browsers, use event caputuring (neither bubbles) + +// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation +// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target +;(function($) { + // only implement if not provided by jQuery core (since 1.4) + // TODO verify if jQuery 1.4's implementation is compatible with older jQuery special-event APIs + if (!jQuery.event.special.focusin && !jQuery.event.special.focusout && document.addEventListener) { + $.each({ + focus: 'focusin', + blur: 'focusout' + }, function( original, fix ){ + $.event.special[fix] = { + setup:function() { + this.addEventListener( original, handler, true ); + }, + teardown:function() { + this.removeEventListener( original, handler, true ); + }, + handler: function(e) { + arguments[0] = $.event.fix(e); + arguments[0].type = fix; + return $.event.handle.apply(this, arguments); + } + }; + function handler(e) { + e = $.event.fix(e); + e.type = fix; + return $.event.handle.call(this, e); + } + }); + }; + $.extend($.fn, { + validateDelegate: function(delegate, type, handler) { + return this.bind(type, function(event) { + var target = $(event.target); + if (target.is(delegate)) { + return handler.apply(target, arguments); + } + }); + } + }); +})(jQuery); diff --git a/packages/jQuery.Validation.1.10.0/Content/Scripts/jquery.validate.js b/packages/jQuery.Validation.1.10.0/Content/Scripts/jquery.validate.js new file mode 100644 index 0000000..5264dd5 --- /dev/null +++ b/packages/jQuery.Validation.1.10.0/Content/Scripts/jquery.validate.js @@ -0,0 +1,1262 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. Insofar as a script file is dual licensed under GPL, + * Microsoft neither took the code under GPL nor distributes it thereunder but + * under the terms set out in this paragraph. All notices and licenses + * below are for informational purposes only. + * + * NUGET: END LICENSE TEXT */ +/*! jQuery Validation Plugin - v1.10.0 - 9/7/2012 +* https://github.com/jzaefferer/jquery-validation +* Copyright (c) 2012 Jörn Zaefferer; Licensed MIT */ + +(function($) { + +$.extend($.fn, { + // http://docs.jquery.com/Plugins/Validation/validate + validate: function( options ) { + + // if nothing is selected, return nothing; can't chain anyway + if (!this.length) { + if (options && options.debug && window.console) { + console.warn( "nothing selected, can't validate, returning nothing" ); + } + return; + } + + // check if a validator for this form was already created + var validator = $.data(this[0], 'validator'); + if ( validator ) { + return validator; + } + + // Add novalidate tag if HTML5. + this.attr('novalidate', 'novalidate'); + + validator = new $.validator( options, this[0] ); + $.data(this[0], 'validator', validator); + + if ( validator.settings.onsubmit ) { + + this.validateDelegate( ":submit", "click", function(ev) { + if ( validator.settings.submitHandler ) { + validator.submitButton = ev.target; + } + // allow suppressing validation by adding a cancel class to the submit button + if ( $(ev.target).hasClass('cancel') ) { + validator.cancelSubmit = true; + } + }); + + // validate the form on submit + this.submit( function( event ) { + if ( validator.settings.debug ) { + // prevent form submit to be able to see console output + event.preventDefault(); + } + function handle() { + var hidden; + if ( validator.settings.submitHandler ) { + if (validator.submitButton) { + // insert a hidden input as a replacement for the missing submit button + hidden = $("").attr("name", validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm); + } + validator.settings.submitHandler.call( validator, validator.currentForm, event ); + if (validator.submitButton) { + // and clean up afterwards; thanks to no-block-scope, hidden can be referenced + hidden.remove(); + } + return false; + } + return true; + } + + // prevent submit for invalid forms or custom submit handlers + if ( validator.cancelSubmit ) { + validator.cancelSubmit = false; + return handle(); + } + if ( validator.form() ) { + if ( validator.pendingRequest ) { + validator.formSubmitted = true; + return false; + } + return handle(); + } else { + validator.focusInvalid(); + return false; + } + }); + } + + return validator; + }, + // http://docs.jquery.com/Plugins/Validation/valid + valid: function() { + if ( $(this[0]).is('form')) { + return this.validate().form(); + } else { + var valid = true; + var validator = $(this[0].form).validate(); + this.each(function() { + valid &= validator.element(this); + }); + return valid; + } + }, + // attributes: space seperated list of attributes to retrieve and remove + removeAttrs: function(attributes) { + var result = {}, + $element = this; + $.each(attributes.split(/\s/), function(index, value) { + result[value] = $element.attr(value); + $element.removeAttr(value); + }); + return result; + }, + // http://docs.jquery.com/Plugins/Validation/rules + rules: function(command, argument) { + var element = this[0]; + + if (command) { + var settings = $.data(element.form, 'validator').settings; + var staticRules = settings.rules; + var existingRules = $.validator.staticRules(element); + switch(command) { + case "add": + $.extend(existingRules, $.validator.normalizeRule(argument)); + staticRules[element.name] = existingRules; + if (argument.messages) { + settings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages ); + } + break; + case "remove": + if (!argument) { + delete staticRules[element.name]; + return existingRules; + } + var filtered = {}; + $.each(argument.split(/\s/), function(index, method) { + filtered[method] = existingRules[method]; + delete existingRules[method]; + }); + return filtered; + } + } + + var data = $.validator.normalizeRules( + $.extend( + {}, + $.validator.metadataRules(element), + $.validator.classRules(element), + $.validator.attributeRules(element), + $.validator.staticRules(element) + ), element); + + // make sure required is at front + if (data.required) { + var param = data.required; + delete data.required; + data = $.extend({required: param}, data); + } + + return data; + } +}); + +// Custom selectors +$.extend($.expr[":"], { + // http://docs.jquery.com/Plugins/Validation/blank + blank: function(a) {return !$.trim("" + a.value);}, + // http://docs.jquery.com/Plugins/Validation/filled + filled: function(a) {return !!$.trim("" + a.value);}, + // http://docs.jquery.com/Plugins/Validation/unchecked + unchecked: function(a) {return !a.checked;} +}); + +// constructor for validator +$.validator = function( options, form ) { + this.settings = $.extend( true, {}, $.validator.defaults, options ); + this.currentForm = form; + this.init(); +}; + +$.validator.format = function(source, params) { + if ( arguments.length === 1 ) { + return function() { + var args = $.makeArray(arguments); + args.unshift(source); + return $.validator.format.apply( this, args ); + }; + } + if ( arguments.length > 2 && params.constructor !== Array ) { + params = $.makeArray(arguments).slice(1); + } + if ( params.constructor !== Array ) { + params = [ params ]; + } + $.each(params, function(i, n) { + source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n); + }); + return source; +}; + +$.extend($.validator, { + + defaults: { + messages: {}, + groups: {}, + rules: {}, + errorClass: "error", + validClass: "valid", + errorElement: "label", + focusInvalid: true, + errorContainer: $( [] ), + errorLabelContainer: $( [] ), + onsubmit: true, + ignore: ":hidden", + ignoreTitle: false, + onfocusin: function(element, event) { + this.lastActive = element; + + // hide error label and remove error class on focus if enabled + if ( this.settings.focusCleanup && !this.blockFocusCleanup ) { + if ( this.settings.unhighlight ) { + this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass ); + } + this.addWrapper(this.errorsFor(element)).hide(); + } + }, + onfocusout: function(element, event) { + if ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) { + this.element(element); + } + }, + onkeyup: function(element, event) { + if ( event.which === 9 && this.elementValue(element) === '' ) { + return; + } else if ( element.name in this.submitted || element === this.lastActive ) { + this.element(element); + } + }, + onclick: function(element, event) { + // click on selects, radiobuttons and checkboxes + if ( element.name in this.submitted ) { + this.element(element); + } + // or option elements, check parent select in that case + else if (element.parentNode.name in this.submitted) { + this.element(element.parentNode); + } + }, + highlight: function(element, errorClass, validClass) { + if (element.type === 'radio') { + this.findByName(element.name).addClass(errorClass).removeClass(validClass); + } else { + $(element).addClass(errorClass).removeClass(validClass); + } + }, + unhighlight: function(element, errorClass, validClass) { + if (element.type === 'radio') { + this.findByName(element.name).removeClass(errorClass).addClass(validClass); + } else { + $(element).removeClass(errorClass).addClass(validClass); + } + } + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/setDefaults + setDefaults: function(settings) { + $.extend( $.validator.defaults, settings ); + }, + + messages: { + required: "This field is required.", + remote: "Please fix this field.", + email: "Please enter a valid email address.", + url: "Please enter a valid URL.", + date: "Please enter a valid date.", + dateISO: "Please enter a valid date (ISO).", + number: "Please enter a valid number.", + digits: "Please enter only digits.", + creditcard: "Please enter a valid credit card number.", + equalTo: "Please enter the same value again.", + maxlength: $.validator.format("Please enter no more than {0} characters."), + minlength: $.validator.format("Please enter at least {0} characters."), + rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."), + range: $.validator.format("Please enter a value between {0} and {1}."), + max: $.validator.format("Please enter a value less than or equal to {0}."), + min: $.validator.format("Please enter a value greater than or equal to {0}.") + }, + + autoCreateRanges: false, + + prototype: { + + init: function() { + this.labelContainer = $(this.settings.errorLabelContainer); + this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm); + this.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer ); + this.submitted = {}; + this.valueCache = {}; + this.pendingRequest = 0; + this.pending = {}; + this.invalid = {}; + this.reset(); + + var groups = (this.groups = {}); + $.each(this.settings.groups, function(key, value) { + $.each(value.split(/\s/), function(index, name) { + groups[name] = key; + }); + }); + var rules = this.settings.rules; + $.each(rules, function(key, value) { + rules[key] = $.validator.normalizeRule(value); + }); + + function delegate(event) { + var validator = $.data(this[0].form, "validator"), + eventType = "on" + event.type.replace(/^validate/, ""); + if (validator.settings[eventType]) { + validator.settings[eventType].call(validator, this[0], event); + } + } + $(this.currentForm) + .validateDelegate(":text, [type='password'], [type='file'], select, textarea, " + + "[type='number'], [type='search'] ,[type='tel'], [type='url'], " + + "[type='email'], [type='datetime'], [type='date'], [type='month'], " + + "[type='week'], [type='time'], [type='datetime-local'], " + + "[type='range'], [type='color'] ", + "focusin focusout keyup", delegate) + .validateDelegate("[type='radio'], [type='checkbox'], select, option", "click", delegate); + + if (this.settings.invalidHandler) { + $(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler); + } + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/form + form: function() { + this.checkForm(); + $.extend(this.submitted, this.errorMap); + this.invalid = $.extend({}, this.errorMap); + if (!this.valid()) { + $(this.currentForm).triggerHandler("invalid-form", [this]); + } + this.showErrors(); + return this.valid(); + }, + + checkForm: function() { + this.prepareForm(); + for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) { + this.check( elements[i] ); + } + return this.valid(); + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/element + element: function( element ) { + element = this.validationTargetFor( this.clean( element ) ); + this.lastElement = element; + this.prepareElement( element ); + this.currentElements = $(element); + var result = this.check( element ) !== false; + if (result) { + delete this.invalid[element.name]; + } else { + this.invalid[element.name] = true; + } + if ( !this.numberOfInvalids() ) { + // Hide error containers on last error + this.toHide = this.toHide.add( this.containers ); + } + this.showErrors(); + return result; + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/showErrors + showErrors: function(errors) { + if(errors) { + // add items to error list and map + $.extend( this.errorMap, errors ); + this.errorList = []; + for ( var name in errors ) { + this.errorList.push({ + message: errors[name], + element: this.findByName(name)[0] + }); + } + // remove items from success list + this.successList = $.grep( this.successList, function(element) { + return !(element.name in errors); + }); + } + if (this.settings.showErrors) { + this.settings.showErrors.call( this, this.errorMap, this.errorList ); + } else { + this.defaultShowErrors(); + } + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/resetForm + resetForm: function() { + if ( $.fn.resetForm ) { + $( this.currentForm ).resetForm(); + } + this.submitted = {}; + this.lastElement = null; + this.prepareForm(); + this.hideErrors(); + this.elements().removeClass( this.settings.errorClass ).removeData( "previousValue" ); + }, + + numberOfInvalids: function() { + return this.objectLength(this.invalid); + }, + + objectLength: function( obj ) { + var count = 0; + for ( var i in obj ) { + count++; + } + return count; + }, + + hideErrors: function() { + this.addWrapper( this.toHide ).hide(); + }, + + valid: function() { + return this.size() === 0; + }, + + size: function() { + return this.errorList.length; + }, + + focusInvalid: function() { + if( this.settings.focusInvalid ) { + try { + $(this.findLastActive() || this.errorList.length && this.errorList[0].element || []) + .filter(":visible") + .focus() + // manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find + .trigger("focusin"); + } catch(e) { + // ignore IE throwing errors when focusing hidden elements + } + } + }, + + findLastActive: function() { + var lastActive = this.lastActive; + return lastActive && $.grep(this.errorList, function(n) { + return n.element.name === lastActive.name; + }).length === 1 && lastActive; + }, + + elements: function() { + var validator = this, + rulesCache = {}; + + // select all valid inputs inside the form (no submit or reset buttons) + return $(this.currentForm) + .find("input, select, textarea") + .not(":submit, :reset, :image, [disabled]") + .not( this.settings.ignore ) + .filter(function() { + if ( !this.name && validator.settings.debug && window.console ) { + console.error( "%o has no name assigned", this); + } + + // select only the first element for each name, and only those with rules specified + if ( this.name in rulesCache || !validator.objectLength($(this).rules()) ) { + return false; + } + + rulesCache[this.name] = true; + return true; + }); + }, + + clean: function( selector ) { + return $( selector )[0]; + }, + + errors: function() { + var errorClass = this.settings.errorClass.replace(' ', '.'); + return $( this.settings.errorElement + "." + errorClass, this.errorContext ); + }, + + reset: function() { + this.successList = []; + this.errorList = []; + this.errorMap = {}; + this.toShow = $([]); + this.toHide = $([]); + this.currentElements = $([]); + }, + + prepareForm: function() { + this.reset(); + this.toHide = this.errors().add( this.containers ); + }, + + prepareElement: function( element ) { + this.reset(); + this.toHide = this.errorsFor(element); + }, + + elementValue: function( element ) { + var type = $(element).attr('type'), + val = $(element).val(); + + if ( type === 'radio' || type === 'checkbox' ) { + return $('input[name="' + $(element).attr('name') + '"]:checked').val(); + } + + if ( typeof val === 'string' ) { + return val.replace(/\r/g, ""); + } + return val; + }, + + check: function( element ) { + element = this.validationTargetFor( this.clean( element ) ); + + var rules = $(element).rules(); + var dependencyMismatch = false; + var val = this.elementValue(element); + var result; + + for (var method in rules ) { + var rule = { method: method, parameters: rules[method] }; + try { + + result = $.validator.methods[method].call( this, val, element, rule.parameters ); + + // if a method indicates that the field is optional and therefore valid, + // don't mark it as valid when there are no other rules + if ( result === "dependency-mismatch" ) { + dependencyMismatch = true; + continue; + } + dependencyMismatch = false; + + if ( result === "pending" ) { + this.toHide = this.toHide.not( this.errorsFor(element) ); + return; + } + + if( !result ) { + this.formatAndAdd( element, rule ); + return false; + } + } catch(e) { + if ( this.settings.debug && window.console ) { + console.log("exception occured when checking element " + element.id + ", check the '" + rule.method + "' method", e); + } + throw e; + } + } + if (dependencyMismatch) { + return; + } + if ( this.objectLength(rules) ) { + this.successList.push(element); + } + return true; + }, + + // return the custom message for the given element and validation method + // specified in the element's "messages" metadata + customMetaMessage: function(element, method) { + if (!$.metadata) { + return; + } + var meta = this.settings.meta ? $(element).metadata()[this.settings.meta] : $(element).metadata(); + return meta && meta.messages && meta.messages[method]; + }, + + // return the custom message for the given element and validation method + // specified in the element's HTML5 data attribute + customDataMessage: function(element, method) { + return $(element).data('msg-' + method.toLowerCase()) || (element.attributes && $(element).attr('data-msg-' + method.toLowerCase())); + }, + + // return the custom message for the given element name and validation method + customMessage: function( name, method ) { + var m = this.settings.messages[name]; + return m && (m.constructor === String ? m : m[method]); + }, + + // return the first defined argument, allowing empty strings + findDefined: function() { + for(var i = 0; i < arguments.length; i++) { + if (arguments[i] !== undefined) { + return arguments[i]; + } + } + return undefined; + }, + + defaultMessage: function( element, method) { + return this.findDefined( + this.customMessage( element.name, method ), + this.customDataMessage( element, method ), + this.customMetaMessage( element, method ), + // title is never undefined, so handle empty string as undefined + !this.settings.ignoreTitle && element.title || undefined, + $.validator.messages[method], + "Warning: No message defined for " + element.name + "" + ); + }, + + formatAndAdd: function( element, rule ) { + var message = this.defaultMessage( element, rule.method ), + theregex = /\$?\{(\d+)\}/g; + if ( typeof message === "function" ) { + message = message.call(this, rule.parameters, element); + } else if (theregex.test(message)) { + message = $.validator.format(message.replace(theregex, '{$1}'), rule.parameters); + } + this.errorList.push({ + message: message, + element: element + }); + + this.errorMap[element.name] = message; + this.submitted[element.name] = message; + }, + + addWrapper: function(toToggle) { + if ( this.settings.wrapper ) { + toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) ); + } + return toToggle; + }, + + defaultShowErrors: function() { + var i, elements; + for ( i = 0; this.errorList[i]; i++ ) { + var error = this.errorList[i]; + if ( this.settings.highlight ) { + this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass ); + } + this.showLabel( error.element, error.message ); + } + if( this.errorList.length ) { + this.toShow = this.toShow.add( this.containers ); + } + if (this.settings.success) { + for ( i = 0; this.successList[i]; i++ ) { + this.showLabel( this.successList[i] ); + } + } + if (this.settings.unhighlight) { + for ( i = 0, elements = this.validElements(); elements[i]; i++ ) { + this.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass ); + } + } + this.toHide = this.toHide.not( this.toShow ); + this.hideErrors(); + this.addWrapper( this.toShow ).show(); + }, + + validElements: function() { + return this.currentElements.not(this.invalidElements()); + }, + + invalidElements: function() { + return $(this.errorList).map(function() { + return this.element; + }); + }, + + showLabel: function(element, message) { + var label = this.errorsFor( element ); + if ( label.length ) { + // refresh error/success class + label.removeClass( this.settings.validClass ).addClass( this.settings.errorClass ); + + // check if we have a generated label, replace the message then + if ( label.attr("generated") ) { + label.html(message); + } + } else { + // create label + label = $("<" + this.settings.errorElement + "/>") + .attr({"for": this.idOrName(element), generated: true}) + .addClass(this.settings.errorClass) + .html(message || ""); + if ( this.settings.wrapper ) { + // make sure the element is visible, even in IE + // actually showing the wrapped element is handled elsewhere + label = label.hide().show().wrap("<" + this.settings.wrapper + "/>").parent(); + } + if ( !this.labelContainer.append(label).length ) { + if ( this.settings.errorPlacement ) { + this.settings.errorPlacement(label, $(element) ); + } else { + label.insertAfter(element); + } + } + } + if ( !message && this.settings.success ) { + label.text(""); + if ( typeof this.settings.success === "string" ) { + label.addClass( this.settings.success ); + } else { + this.settings.success( label, element ); + } + } + this.toShow = this.toShow.add(label); + }, + + errorsFor: function(element) { + var name = this.idOrName(element); + return this.errors().filter(function() { + return $(this).attr('for') === name; + }); + }, + + idOrName: function(element) { + return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name); + }, + + validationTargetFor: function(element) { + // if radio/checkbox, validate first element in group instead + if (this.checkable(element)) { + element = this.findByName( element.name ).not(this.settings.ignore)[0]; + } + return element; + }, + + checkable: function( element ) { + return (/radio|checkbox/i).test(element.type); + }, + + findByName: function( name ) { + return $(this.currentForm).find('[name="' + name + '"]'); + }, + + getLength: function(value, element) { + switch( element.nodeName.toLowerCase() ) { + case 'select': + return $("option:selected", element).length; + case 'input': + if( this.checkable( element) ) { + return this.findByName(element.name).filter(':checked').length; + } + } + return value.length; + }, + + depend: function(param, element) { + return this.dependTypes[typeof param] ? this.dependTypes[typeof param](param, element) : true; + }, + + dependTypes: { + "boolean": function(param, element) { + return param; + }, + "string": function(param, element) { + return !!$(param, element.form).length; + }, + "function": function(param, element) { + return param(element); + } + }, + + optional: function(element) { + var val = this.elementValue(element); + return !$.validator.methods.required.call(this, val, element) && "dependency-mismatch"; + }, + + startRequest: function(element) { + if (!this.pending[element.name]) { + this.pendingRequest++; + this.pending[element.name] = true; + } + }, + + stopRequest: function(element, valid) { + this.pendingRequest--; + // sometimes synchronization fails, make sure pendingRequest is never < 0 + if (this.pendingRequest < 0) { + this.pendingRequest = 0; + } + delete this.pending[element.name]; + if ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) { + $(this.currentForm).submit(); + this.formSubmitted = false; + } else if (!valid && this.pendingRequest === 0 && this.formSubmitted) { + $(this.currentForm).triggerHandler("invalid-form", [this]); + this.formSubmitted = false; + } + }, + + previousValue: function(element) { + return $.data(element, "previousValue") || $.data(element, "previousValue", { + old: null, + valid: true, + message: this.defaultMessage( element, "remote" ) + }); + } + + }, + + classRuleSettings: { + required: {required: true}, + email: {email: true}, + url: {url: true}, + date: {date: true}, + dateISO: {dateISO: true}, + number: {number: true}, + digits: {digits: true}, + creditcard: {creditcard: true} + }, + + addClassRules: function(className, rules) { + if ( className.constructor === String ) { + this.classRuleSettings[className] = rules; + } else { + $.extend(this.classRuleSettings, className); + } + }, + + classRules: function(element) { + var rules = {}; + var classes = $(element).attr('class'); + if ( classes ) { + $.each(classes.split(' '), function() { + if (this in $.validator.classRuleSettings) { + $.extend(rules, $.validator.classRuleSettings[this]); + } + }); + } + return rules; + }, + + attributeRules: function(element) { + var rules = {}; + var $element = $(element); + + for (var method in $.validator.methods) { + var value; + + // support for in both html5 and older browsers + if (method === 'required') { + value = $element.get(0).getAttribute(method); + // Some browsers return an empty string for the required attribute + // and non-HTML5 browsers might have required="" markup + if (value === "") { + value = true; + } + // force non-HTML5 browsers to return bool + value = !!value; + } else { + value = $element.attr(method); + } + + if (value) { + rules[method] = value; + } else if ($element[0].getAttribute("type") === method) { + rules[method] = true; + } + } + + // maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs + if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) { + delete rules.maxlength; + } + + return rules; + }, + + metadataRules: function(element) { + if (!$.metadata) { + return {}; + } + + var meta = $.data(element.form, 'validator').settings.meta; + return meta ? + $(element).metadata()[meta] : + $(element).metadata(); + }, + + staticRules: function(element) { + var rules = {}; + var validator = $.data(element.form, 'validator'); + if (validator.settings.rules) { + rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {}; + } + return rules; + }, + + normalizeRules: function(rules, element) { + // handle dependency check + $.each(rules, function(prop, val) { + // ignore rule when param is explicitly false, eg. required:false + if (val === false) { + delete rules[prop]; + return; + } + if (val.param || val.depends) { + var keepRule = true; + switch (typeof val.depends) { + case "string": + keepRule = !!$(val.depends, element.form).length; + break; + case "function": + keepRule = val.depends.call(element, element); + break; + } + if (keepRule) { + rules[prop] = val.param !== undefined ? val.param : true; + } else { + delete rules[prop]; + } + } + }); + + // evaluate parameters + $.each(rules, function(rule, parameter) { + rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter; + }); + + // clean number parameters + $.each(['minlength', 'maxlength', 'min', 'max'], function() { + if (rules[this]) { + rules[this] = Number(rules[this]); + } + }); + $.each(['rangelength', 'range'], function() { + if (rules[this]) { + rules[this] = [Number(rules[this][0]), Number(rules[this][1])]; + } + }); + + if ($.validator.autoCreateRanges) { + // auto-create ranges + if (rules.min && rules.max) { + rules.range = [rules.min, rules.max]; + delete rules.min; + delete rules.max; + } + if (rules.minlength && rules.maxlength) { + rules.rangelength = [rules.minlength, rules.maxlength]; + delete rules.minlength; + delete rules.maxlength; + } + } + + // To support custom messages in metadata ignore rule methods titled "messages" + if (rules.messages) { + delete rules.messages; + } + + return rules; + }, + + // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true} + normalizeRule: function(data) { + if( typeof data === "string" ) { + var transformed = {}; + $.each(data.split(/\s/), function() { + transformed[this] = true; + }); + data = transformed; + } + return data; + }, + + // http://docs.jquery.com/Plugins/Validation/Validator/addMethod + addMethod: function(name, method, message) { + $.validator.methods[name] = method; + $.validator.messages[name] = message !== undefined ? message : $.validator.messages[name]; + if (method.length < 3) { + $.validator.addClassRules(name, $.validator.normalizeRule(name)); + } + }, + + methods: { + + // http://docs.jquery.com/Plugins/Validation/Methods/required + required: function(value, element, param) { + // check if dependency is met + if ( !this.depend(param, element) ) { + return "dependency-mismatch"; + } + if ( element.nodeName.toLowerCase() === "select" ) { + // could be an array for select-multiple or a string, both are fine this way + var val = $(element).val(); + return val && val.length > 0; + } + if ( this.checkable(element) ) { + return this.getLength(value, element) > 0; + } + return $.trim(value).length > 0; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/remote + remote: function(value, element, param) { + if ( this.optional(element) ) { + return "dependency-mismatch"; + } + + var previous = this.previousValue(element); + if (!this.settings.messages[element.name] ) { + this.settings.messages[element.name] = {}; + } + previous.originalMessage = this.settings.messages[element.name].remote; + this.settings.messages[element.name].remote = previous.message; + + param = typeof param === "string" && {url:param} || param; + + if ( this.pending[element.name] ) { + return "pending"; + } + if ( previous.old === value ) { + return previous.valid; + } + + previous.old = value; + var validator = this; + this.startRequest(element); + var data = {}; + data[element.name] = value; + $.ajax($.extend(true, { + url: param, + mode: "abort", + port: "validate" + element.name, + dataType: "json", + data: data, + success: function(response) { + validator.settings.messages[element.name].remote = previous.originalMessage; + var valid = response === true || response === "true"; + if ( valid ) { + var submitted = validator.formSubmitted; + validator.prepareElement(element); + validator.formSubmitted = submitted; + validator.successList.push(element); + delete validator.invalid[element.name]; + validator.showErrors(); + } else { + var errors = {}; + var message = response || validator.defaultMessage( element, "remote" ); + errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message; + validator.invalid[element.name] = true; + validator.showErrors(errors); + } + previous.valid = valid; + validator.stopRequest(element, valid); + } + }, param)); + return "pending"; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/minlength + minlength: function(value, element, param) { + var length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element); + return this.optional(element) || length >= param; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/maxlength + maxlength: function(value, element, param) { + var length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element); + return this.optional(element) || length <= param; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/rangelength + rangelength: function(value, element, param) { + var length = $.isArray( value ) ? value.length : this.getLength($.trim(value), element); + return this.optional(element) || ( length >= param[0] && length <= param[1] ); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/min + min: function( value, element, param ) { + return this.optional(element) || value >= param; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/max + max: function( value, element, param ) { + return this.optional(element) || value <= param; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/range + range: function( value, element, param ) { + return this.optional(element) || ( value >= param[0] && value <= param[1] ); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/email + email: function(value, element) { + // contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/ + return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(value); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/url + url: function(value, element) { + // contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/ + return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/date + date: function(value, element) { + return this.optional(element) || !/Invalid|NaN/.test(new Date(value)); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/dateISO + dateISO: function(value, element) { + return this.optional(element) || /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(value); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/number + number: function(value, element) { + return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/digits + digits: function(value, element) { + return this.optional(element) || /^\d+$/.test(value); + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/creditcard + // based on http://en.wikipedia.org/wiki/Luhn + creditcard: function(value, element) { + if ( this.optional(element) ) { + return "dependency-mismatch"; + } + // accept only spaces, digits and dashes + if (/[^0-9 \-]+/.test(value)) { + return false; + } + var nCheck = 0, + nDigit = 0, + bEven = false; + + value = value.replace(/\D/g, ""); + + for (var n = value.length - 1; n >= 0; n--) { + var cDigit = value.charAt(n); + nDigit = parseInt(cDigit, 10); + if (bEven) { + if ((nDigit *= 2) > 9) { + nDigit -= 9; + } + } + nCheck += nDigit; + bEven = !bEven; + } + + return (nCheck % 10) === 0; + }, + + // http://docs.jquery.com/Plugins/Validation/Methods/equalTo + equalTo: function(value, element, param) { + // bind to the blur event of the target in order to revalidate whenever the target field is updated + // TODO find a way to bind the event just once, avoiding the unbind-rebind overhead + var target = $(param); + if (this.settings.onfocusout) { + target.unbind(".validate-equalTo").bind("blur.validate-equalTo", function() { + $(element).valid(); + }); + } + return value === target.val(); + } + + } + +}); + +// deprecated, use $.validator.format instead +$.format = $.validator.format; + +}(jQuery)); + +// ajax mode: abort +// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]}); +// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort() +(function($) { + var pendingRequests = {}; + // Use a prefilter if available (1.5+) + if ( $.ajaxPrefilter ) { + $.ajaxPrefilter(function(settings, _, xhr) { + var port = settings.port; + if (settings.mode === "abort") { + if ( pendingRequests[port] ) { + pendingRequests[port].abort(); + } + pendingRequests[port] = xhr; + } + }); + } else { + // Proxy ajax + var ajax = $.ajax; + $.ajax = function(settings) { + var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode, + port = ( "port" in settings ? settings : $.ajaxSettings ).port; + if (mode === "abort") { + if ( pendingRequests[port] ) { + pendingRequests[port].abort(); + } + return (pendingRequests[port] = ajax.apply(this, arguments)); + } + return ajax.apply(this, arguments); + }; + } +}(jQuery)); + +// provides cross-browser focusin and focusout events +// IE has native support, in other browsers, use event caputuring (neither bubbles) + +// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation +// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target +(function($) { + // only implement if not provided by jQuery core (since 1.4) + // TODO verify if jQuery 1.4's implementation is compatible with older jQuery special-event APIs + if (!jQuery.event.special.focusin && !jQuery.event.special.focusout && document.addEventListener) { + $.each({ + focus: 'focusin', + blur: 'focusout' + }, function( original, fix ){ + $.event.special[fix] = { + setup:function() { + this.addEventListener( original, handler, true ); + }, + teardown:function() { + this.removeEventListener( original, handler, true ); + }, + handler: function(e) { + var args = arguments; + args[0] = $.event.fix(e); + args[0].type = fix; + return $.event.handle.apply(this, args); + } + }; + function handler(e) { + e = $.event.fix(e); + e.type = fix; + return $.event.handle.call(this, e); + } + }); + } + $.extend($.fn, { + validateDelegate: function(delegate, type, handler) { + return this.bind(type, function(event) { + var target = $(event.target); + if (target.is(delegate)) { + return handler.apply(target, arguments); + } + }); + } + }); +}(jQuery)); diff --git a/packages/jQuery.Validation.1.10.0/Content/Scripts/jquery.validate.min.js b/packages/jQuery.Validation.1.10.0/Content/Scripts/jquery.validate.min.js new file mode 100644 index 0000000..48cb60c --- /dev/null +++ b/packages/jQuery.Validation.1.10.0/Content/Scripts/jquery.validate.min.js @@ -0,0 +1,18 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. Insofar as a script file is dual licensed under GPL, + * Microsoft neither took the code under GPL nor distributes it thereunder but + * under the terms set out in this paragraph. All notices and licenses + * below are for informational purposes only. + * + * NUGET: END LICENSE TEXT */ +/*! jQuery Validation Plugin - v1.10.0 - 9/7/2012 +* https://github.com/jzaefferer/jquery-validation +* Copyright (c) 2012 Jörn Zaefferer; Licensed MIT */ +(function(a){a.extend(a.fn,{validate:function(b){if(!this.length){b&&b.debug&&window.console&&console.warn("nothing selected, can't validate, returning nothing");return}var c=a.data(this[0],"validator");return c?c:(this.attr("novalidate","novalidate"),c=new a.validator(b,this[0]),a.data(this[0],"validator",c),c.settings.onsubmit&&(this.validateDelegate(":submit","click",function(b){c.settings.submitHandler&&(c.submitButton=b.target),a(b.target).hasClass("cancel")&&(c.cancelSubmit=!0)}),this.submit(function(b){function d(){var d;return c.settings.submitHandler?(c.submitButton&&(d=a("").attr("name",c.submitButton.name).val(c.submitButton.value).appendTo(c.currentForm)),c.settings.submitHandler.call(c,c.currentForm,b),c.submitButton&&d.remove(),!1):!0}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){if(a(this[0]).is("form"))return this.validate().form();var b=!0,c=a(this[0].form).validate();return this.each(function(){b&=c.element(this)}),b},removeAttrs:function(b){var c={},d=this;return a.each(b.split(/\s/),function(a,b){c[b]=d.attr(b),d.removeAttr(b)}),c},rules:function(b,c){var d=this[0];if(b){var e=a.data(d.form,"validator").settings,f=e.rules,g=a.validator.staticRules(d);switch(b){case"add":a.extend(g,a.validator.normalizeRule(c)),f[d.name]=g,c.messages&&(e.messages[d.name]=a.extend(e.messages[d.name],c.messages));break;case"remove":if(!c)return delete f[d.name],g;var h={};return a.each(c.split(/\s/),function(a,b){h[b]=g[b],delete g[b]}),h}}var i=a.validator.normalizeRules(a.extend({},a.validator.metadataRules(d),a.validator.classRules(d),a.validator.attributeRules(d),a.validator.staticRules(d)),d);if(i.required){var j=i.required;delete i.required,i=a.extend({required:j},i)}return i}}),a.extend(a.expr[":"],{blank:function(b){return!a.trim(""+b.value)},filled:function(b){return!!a.trim(""+b.value)},unchecked:function(a){return!a.checked}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return arguments.length===1?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp("\\{"+a+"\\}","g"),c)}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",validClass:"valid",errorElement:"label",focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(a,b){this.lastActive=a,this.settings.focusCleanup&&!this.blockFocusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.addWrapper(this.errorsFor(a)).hide())},onfocusout:function(a,b){!this.checkable(a)&&(a.name in this.submitted||!this.optional(a))&&this.element(a)},onkeyup:function(a,b){if(b.which===9&&this.elementValue(a)==="")return;(a.name in this.submitted||a===this.lastActive)&&this.element(a)},onclick:function(a,b){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){b.type==="radio"?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){b.type==="radio"?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",maxlength:a.validator.format("Please enter no more than {0} characters."),minlength:a.validator.format("Please enter at least {0} characters."),rangelength:a.validator.format("Please enter a value between {0} and {1} characters long."),range:a.validator.format("Please enter a value between {0} and {1}."),max:a.validator.format("Please enter a value less than or equal to {0}."),min:a.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:!1,prototype:{init:function(){function d(b){var c=a.data(this[0].form,"validator"),d="on"+b.type.replace(/^validate/,"");c.settings[d]&&c.settings[d].call(c,this[0],b)}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var b=this.groups={};a.each(this.settings.groups,function(c,d){a.each(d.split(/\s/),function(a,d){b[d]=c})});var c=this.settings.rules;a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).validateDelegate(":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'] ","focusin focusout keyup",d).validateDelegate("[type='radio'], [type='checkbox'], select, option","click",d),this.settings.invalidHandler&&a(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){b=this.validationTargetFor(this.clean(b)),this.lastElement=b,this.prepareElement(b),this.currentElements=a(b);var c=this.check(b)!==!1;return c?delete this.invalid[b.name]:this.invalid[b.name]=!0,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),c},showErrors:function(b){if(b){a.extend(this.errorMap,b),this.errorList=[];for(var c in b)this.errorList.push({message:b[c],element:this.findByName(c)[0]});this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.submitted={},this.lastElement=null,this.prepareForm(),this.hideErrors(),this.elements().removeClass(this.settings.errorClass).removeData("previousValue")},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b=0;for(var c in a)b++;return b},hideErrors:function(){this.addWrapper(this.toHide).hide()},valid:function(){return this.size()===0},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&a.grep(this.errorList,function(a){return a.element.name===b.name}).length===1&&b},elements:function(){var b=this,c={};return a(this.currentForm).find("input, select, textarea").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){return!this.name&&b.settings.debug&&window.console&&console.error("%o has no name assigned",this),this.name in c||!b.objectLength(a(this).rules())?!1:(c[this.name]=!0,!0)})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.replace(" ",".");return a(this.settings.errorElement+"."+b,this.errorContext)},reset:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([]),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c=a(b).attr("type"),d=a(b).val();return c==="radio"||c==="checkbox"?a('input[name="'+a(b).attr("name")+'"]:checked').val():typeof d=="string"?d.replace(/\r/g,""):d},check:function(b){b=this.validationTargetFor(this.clean(b));var c=a(b).rules(),d=!1,e=this.elementValue(b),f;for(var g in c){var h={method:g,parameters:c[g]};try{f=a.validator.methods[g].call(this,e,b,h.parameters);if(f==="dependency-mismatch"){d=!0;continue}d=!1;if(f==="pending"){this.toHide=this.toHide.not(this.errorsFor(b));return}if(!f)return this.formatAndAdd(b,h),!1}catch(i){throw this.settings.debug&&window.console&&console.log("exception occured when checking element "+b.id+", check the '"+h.method+"' method",i),i}}if(d)return;return this.objectLength(c)&&this.successList.push(b),!0},customMetaMessage:function(b,c){if(!a.metadata)return;var d=this.settings.meta?a(b).metadata()[this.settings.meta]:a(b).metadata();return d&&d.messages&&d.messages[c]},customDataMessage:function(b,c){return a(b).data("msg-"+c.toLowerCase())||b.attributes&&a(b).attr("data-msg-"+c.toLowerCase())},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;aWarning: No message defined for "+b.name+"")},formatAndAdd:function(b,c){var d=this.defaultMessage(b,c.method),e=/\$?\{(\d+)\}/g;typeof d=="function"?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,"{$1}"),c.parameters)),this.errorList.push({message:d,element:b}),this.errorMap[b.name]=d,this.submitted[b.name]=d},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b;for(a=0;this.errorList[a];a++){var c=this.errorList[a];this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message)}this.errorList.length&&(this.toShow=this.toShow.add(this.containers));if(this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d=this.errorsFor(b);d.length?(d.removeClass(this.settings.validClass).addClass(this.settings.errorClass),d.attr("generated")&&d.html(c)):(d=a("<"+this.settings.errorElement+"/>").attr({"for":this.idOrName(b),generated:!0}).addClass(this.settings.errorClass).html(c||""),this.settings.wrapper&&(d=d.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.append(d).length||(this.settings.errorPlacement?this.settings.errorPlacement(d,a(b)):d.insertAfter(b))),!c&&this.settings.success&&(d.text(""),typeof this.settings.success=="string"?d.addClass(this.settings.success):this.settings.success(d,b)),this.toShow=this.toShow.add(d)},errorsFor:function(b){var c=this.idOrName(b);return this.errors().filter(function(){return a(this).attr("for")===c})},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(a){return this.checkable(a)&&(a=this.findByName(a.name).not(this.settings.ignore)[0]),a},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find('[name="'+b+'"]')},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case"select":return a("option:selected",c).length;case"input":if(this.checkable(c))return this.findByName(c.name).filter(":checked").length}return b.length},depend:function(a,b){return this.dependTypes[typeof a]?this.dependTypes[typeof a](a,b):!0},dependTypes:{"boolean":function(a,b){return a},string:function(b,c){return!!a(b,c.form).length},"function":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&"dependency-mismatch"},startRequest:function(a){this.pending[a.name]||(this.pendingRequest++,this.pending[a.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],c&&this.pendingRequest===0&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.formSubmitted=!1):!c&&this.pendingRequest===0&&this.formSubmitted&&(a(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(b){return a.data(b,"previousValue")||a.data(b,"previousValue",{old:null,valid:!0,message:this.defaultMessage(b,"remote")})}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr("class");return d&&a.each(d.split(" "),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},attributeRules:function(b){var c={},d=a(b);for(var e in a.validator.methods){var f;e==="required"?(f=d.get(0).getAttribute(e),f===""&&(f=!0),f=!!f):f=d.attr(e),f?c[e]=f:d[0].getAttribute("type")===e&&(c[e]=!0)}return c.maxlength&&/-1|2147483647|524288/.test(c.maxlength)&&delete c.maxlength,c},metadataRules:function(b){if(!a.metadata)return{};var c=a.data(b.form,"validator").settings.meta;return c?a(b).metadata()[c]:a(b).metadata()},staticRules:function(b){var c={},d=a.data(b.form,"validator");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1){delete b[d];return}if(e.param||e.depends){var f=!0;switch(typeof e.depends){case"string":f=!!a(e.depends,c.form).length;break;case"function":f=e.depends.call(c,c)}f?b[d]=e.param!==undefined?e.param:!0:delete b[d]}}),a.each(b,function(d,e){b[d]=a.isFunction(e)?e(c):e}),a.each(["minlength","maxlength","min","max"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each(["rangelength","range"],function(){b[this]&&(b[this]=[Number(b[this][0]),Number(b[this][1])])}),a.validator.autoCreateRanges&&(b.min&&b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),b.minlength&&b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b.messages&&delete b.messages,b},normalizeRule:function(b){if(typeof b=="string"){var c={};a.each(b.split(/\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=d!==undefined?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return"dependency-mismatch";if(c.nodeName.toLowerCase()==="select"){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:a.trim(b).length>0},remote:function(b,c,d){if(this.optional(c))return"dependency-mismatch";var e=this.previousValue(c);this.settings.messages[c.name]||(this.settings.messages[c.name]={}),e.originalMessage=this.settings.messages[c.name].remote,this.settings.messages[c.name].remote=e.message,d=typeof d=="string"&&{url:d}||d;if(this.pending[c.name])return"pending";if(e.old===b)return e.valid;e.old=b;var f=this;this.startRequest(c);var g={};return g[c.name]=b,a.ajax(a.extend(!0,{url:d,mode:"abort",port:"validate"+c.name,dataType:"json",data:g,success:function(d){f.settings.messages[c.name].remote=e.originalMessage;var g=d===!0||d==="true";if(g){var h=f.formSubmitted;f.prepareElement(c),f.formSubmitted=h,f.successList.push(c),delete f.invalid[c.name],f.showErrors()}else{var i={},j=d||f.defaultMessage(c,"remote");i[c.name]=e.message=a.isFunction(j)?j(b):j,f.invalid[c.name]=!0,f.showErrors(i)}e.valid=g,f.stopRequest(c,g)}},d)),"pending"},minlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(a.trim(b),c);return this.optional(c)||e>=d},maxlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(a.trim(b),c);return this.optional(c)||e<=d},rangelength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(a.trim(b),c);return this.optional(c)||e>=d[0]&&e<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||a<=c},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},email:function(a,b){return this.optional(b)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(a)},url:function(a,b){return this.optional(b)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(a)},date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a))},dateISO:function(a,b){return this.optional(b)||/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(a)},number:function(a,b){return this.optional(b)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\d+$/.test(a)},creditcard:function(a,b){if(this.optional(b))return"dependency-mismatch";if(/[^0-9 \-]+/.test(a))return!1;var c=0,d=0,e=!1;a=a.replace(/\D/g,"");for(var f=a.length-1;f>=0;f--){var g=a.charAt(f);d=parseInt(g,10),e&&(d*=2)>9&&(d-=9),c+=d,e=!e}return c%10===0},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.unbind(".validate-equalTo").bind("blur.validate-equalTo",function(){a(c).valid()}),b===e.val()}}}),a.format=a.validator.format})(jQuery),function(a){var b={};if(a.ajaxPrefilter)a.ajaxPrefilter(function(a,c,d){var e=a.port;a.mode==="abort"&&(b[e]&&b[e].abort(),b[e]=d)});else{var c=a.ajax;a.ajax=function(d){var e=("mode"in d?d:a.ajaxSettings).mode,f=("port"in d?d:a.ajaxSettings).port;return e==="abort"?(b[f]&&b[f].abort(),b[f]=c.apply(this,arguments)):c.apply(this,arguments)}}}(jQuery),function(a){!jQuery.event.special.focusin&&!jQuery.event.special.focusout&&document.addEventListener&&a.each({focus:"focusin",blur:"focusout"},function(b,c){function d(b){return b=a.event.fix(b),b.type=c,a.event.handle.call(this,b)}a.event.special[c]={setup:function(){this.addEventListener(b,d,!0)},teardown:function(){this.removeEventListener(b,d,!0)},handler:function(b){var d=arguments;return d[0]=a.event.fix(b),d[0].type=c,a.event.handle.apply(this,d)}}}),a.extend(a.fn,{validateDelegate:function(b,c,d){return this.bind(c,function(c){var e=a(c.target);if(e.is(b))return d.apply(e,arguments)})}})}(jQuery) \ No newline at end of file diff --git a/packages/jQuery.Validation.1.10.0/jQuery.Validation.1.10.0.nupkg b/packages/jQuery.Validation.1.10.0/jQuery.Validation.1.10.0.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..bf3314e2ecbbc99ed80b387fa86bcc526e61f0c0 GIT binary patch literal 33701 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 FzW^`o7!?2j literal 0 HcmV?d00001 diff --git a/packages/knockoutjs.2.2.0/Content/Scripts/knockout-2.2.0.debug.js b/packages/knockoutjs.2.2.0/Content/Scripts/knockout-2.2.0.debug.js new file mode 100644 index 0000000..38a38b4 --- /dev/null +++ b/packages/knockoutjs.2.2.0/Content/Scripts/knockout-2.2.0.debug.js @@ -0,0 +1,3591 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. Insofar as a script file is dual licensed under GPL, + * Microsoft neither took the code under GPL nor distributes it thereunder but + * under the terms set out in this paragraph. All notices and licenses + * below are for informational purposes only. + * + * NUGET: END LICENSE TEXT */ +// Knockout JavaScript library v2.2.0 +// (c) Steven Sanderson - http://knockoutjs.com/ +// License: MIT (http://www.opensource.org/licenses/mit-license.php) + +(function(){ +var DEBUG=true; +(function(window,document,navigator,jQuery,undefined){ +!function(factory) { + // Support three module loading scenarios + if (typeof require === 'function' && typeof exports === 'object' && typeof module === 'object') { + // [1] CommonJS/Node.js + var target = module['exports'] || exports; // module.exports is for Node.js + factory(target); + } else if (typeof define === 'function' && define['amd']) { + // [2] AMD anonymous module + define(['exports'], factory); + } else { + // [3] No module loader (plain "); + }; + + if (jQueryTmplVersion > 0) { + jQuery['tmpl']['tag']['ko_code'] = { + open: "__.push($1 || '');" + }; + jQuery['tmpl']['tag']['ko_with'] = { + open: "with($1) {", + close: "} " + }; + } + }; + + ko.jqueryTmplTemplateEngine.prototype = new ko.templateEngine(); + + // Use this one by default *only if jquery.tmpl is referenced* + var jqueryTmplTemplateEngineInstance = new ko.jqueryTmplTemplateEngine(); + if (jqueryTmplTemplateEngineInstance.jQueryTmplVersion > 0) + ko.setTemplateEngine(jqueryTmplTemplateEngineInstance); + + ko.exportSymbol('jqueryTmplTemplateEngine', ko.jqueryTmplTemplateEngine); +})(); +}); +})(window,document,navigator,window["jQuery"]); +})(); diff --git a/packages/knockoutjs.2.2.0/Content/Scripts/knockout-2.2.0.js b/packages/knockoutjs.2.2.0/Content/Scripts/knockout-2.2.0.js new file mode 100644 index 0000000..05be545 --- /dev/null +++ b/packages/knockoutjs.2.2.0/Content/Scripts/knockout-2.2.0.js @@ -0,0 +1,99 @@ +/* NUGET: BEGIN LICENSE TEXT + * + * Microsoft grants you the right to use these script files for the sole + * purpose of either: (i) interacting through your browser with the Microsoft + * website or online service, subject to the applicable licensing or use + * terms; or (ii) using the files as included with a Microsoft product subject + * to that product's license terms. Microsoft reserves all other rights to the + * files not expressly granted by Microsoft, whether by implication, estoppel + * or otherwise. Insofar as a script file is dual licensed under GPL, + * Microsoft neither took the code under GPL nor distributes it thereunder but + * under the terms set out in this paragraph. All notices and licenses + * below are for informational purposes only. + * + * NUGET: END LICENSE TEXT */ +// Knockout JavaScript library v2.2.0 +// (c) Steven Sanderson - http://knockoutjs.com/ +// License: MIT (http://www.opensource.org/licenses/mit-license.php) + +(function() {function i(v){throw v;}var l=!0,n=null,q=!1;function t(v){return function(){return v}};var w=window,x=document,fa=navigator,E=window.jQuery,H=void 0; +function K(v){function ga(a,d,c,e,f){var g=[],a=b.j(function(){var a=d(c,f)||[];0",g[0];);m=4b.a.i(d,a[c])&&d.push(a[c]);return d},V:function(a,b){for(var a=a||[],d=[],c=0,e=a.length;cm?a.setAttribute("selected",b):a.selected=b},D:function(a){return(a||"").replace(d,"")},Qb:function(a,d){for(var c=[],e=(a||"").split(d),f=0,g=e.length;fa.length?q:a.substring(0,b.length)===b},sb:function(a,b){if(b.compareDocumentPosition)return 16== +(b.compareDocumentPosition(a)&16);for(;a!=n;){if(a==b)return l;a=a.parentNode}return q},X:function(a){return b.a.sb(a,a.ownerDocument)},u:function(a){return a&&a.tagName&&a.tagName.toLowerCase()},n:function(b,d,c){var e=m&&k[d];if(!e&&"undefined"!=typeof E){if(a(b,d))var f=c,c=function(a,b){var d=this.checked;b&&(this.checked=b.mb!==l);f.call(this,a);this.checked=d};E(b).bind(d,c)}else!e&&"function"==typeof b.addEventListener?b.addEventListener(d,c,q):"undefined"!=typeof b.attachEvent?b.attachEvent("on"+ +d,function(a){c.call(b,a)}):i(Error("Browser doesn't support addEventListener or attachEvent"))},Aa:function(b,d){(!b||!b.nodeType)&&i(Error("element must be a DOM node when calling triggerEvent"));if("undefined"!=typeof E){var c=[];a(b,d)&&c.push({mb:b.checked});E(b).trigger(d,c)}else"function"==typeof x.createEvent?"function"==typeof b.dispatchEvent?(c=x.createEvent(e[d]||"HTMLEvents"),c.initEvent(d,l,l,w,0,0,0,0,0,q,q,q,q,0,b),b.dispatchEvent(c)):i(Error("The supplied element doesn't support dispatchEvent")): +"undefined"!=typeof b.fireEvent?(a(b,d)&&(b.checked=b.checked!==l),b.fireEvent("on"+d)):i(Error("Browser doesn't support triggering events"))},d:function(a){return b.$(a)?a():a},ta:function(a){return b.$(a)?a.t():a},da:function(a,d,c){if(d){var e=/[\w-]+/g,f=a.className.match(e)||[];b.a.o(d.match(e),function(a){var d=b.a.i(f,a);0<=d?c||f.splice(d,1):c&&f.push(a)});a.className=f.join(" ")}},bb:function(a,d){var c=b.a.d(d);if(c===n||c===H)c="";if(3===a.nodeType)a.data=c;else{var e=b.e.firstChild(a); +!e||3!=e.nodeType||b.e.nextSibling(e)?b.e.N(a,[x.createTextNode(c)]):e.data=c;b.a.vb(a)}},$a:function(a,b){a.name=b;if(7>=m)try{a.mergeAttributes(x.createElement(""),q)}catch(d){}},vb:function(a){9<=m&&(a=1==a.nodeType?a:a.parentNode,a.style&&(a.style.zoom=a.style.zoom))},tb:function(a){if(9<=m){var b=a.style.width;a.style.width=0;a.style.width=b}},Kb:function(a,d){for(var a=b.a.d(a),d=b.a.d(d),c=[],e=a;e<=d;e++)c.push(e);return c},L:function(a){for(var b=[],d=0,c=a.length;d< +c;d++)b.push(a[d]);return b},Ob:6===m,Pb:7===m,Z:m,Na:function(a,d){for(var c=b.a.L(a.getElementsByTagName("input")).concat(b.a.L(a.getElementsByTagName("textarea"))),e="string"==typeof d?function(a){return a.name===d}:function(a){return d.test(a.name)},f=[],g=c.length-1;0<=g;g--)e(c[g])&&f.push(c[g]);return f},Hb:function(a){return"string"==typeof a&&(a=b.a.D(a))?w.JSON&&w.JSON.parse?w.JSON.parse(a):(new Function("return "+a))():n},wa:function(a,d,c){("undefined"==typeof JSON||"undefined"==typeof JSON.stringify)&& +i(Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js"));return JSON.stringify(b.a.d(a),d,c)},Ib:function(a,d,c){var c=c||{},e=c.params||{},f=c.includeFields||this.Ma,g=a;if("object"==typeof a&&"form"===b.a.u(a))for(var g=a.action,h=f.length-1;0<=h;h--)for(var j=b.a.Na(a,f[h]),k=j.length-1;0<=k;k--)e[j[k].name]=j[k].value;var d=b.a.d(d),m=x.createElement("form"); +m.style.display="none";m.action=g;m.method="post";for(var v in d)a=x.createElement("input"),a.name=v,a.value=b.a.wa(b.a.d(d[v])),m.appendChild(a);for(v in e)a=x.createElement("input"),a.name=v,a.value=e[v],m.appendChild(a);x.body.appendChild(m);c.submitter?c.submitter(m):m.submit();setTimeout(function(){m.parentNode.removeChild(m)},0)}}};b.b("utils",b.a);b.b("utils.arrayForEach",b.a.o);b.b("utils.arrayFirst",b.a.kb);b.b("utils.arrayFilter",b.a.fa);b.b("utils.arrayGetDistinctValues",b.a.Fa);b.b("utils.arrayIndexOf", +b.a.i);b.b("utils.arrayMap",b.a.V);b.b("utils.arrayPushAll",b.a.P);b.b("utils.arrayRemoveItem",b.a.ga);b.b("utils.extend",b.a.extend);b.b("utils.fieldsIncludedWithJsonPost",b.a.Ma);b.b("utils.getFormFields",b.a.Na);b.b("utils.peekObservable",b.a.ta);b.b("utils.postJson",b.a.Ib);b.b("utils.parseJson",b.a.Hb);b.b("utils.registerEventHandler",b.a.n);b.b("utils.stringifyJson",b.a.wa);b.b("utils.range",b.a.Kb);b.b("utils.toggleDomNodeCssClass",b.a.da);b.b("utils.triggerEvent",b.a.Aa);b.b("utils.unwrapObservable", +b.a.d);Function.prototype.bind||(Function.prototype.bind=function(a){var b=this,c=Array.prototype.slice.call(arguments),a=c.shift();return function(){return b.apply(a,c.concat(Array.prototype.slice.call(arguments)))}});b.a.f=new function(){var a=0,d="__ko__"+(new Date).getTime(),c={};return{get:function(a,d){var c=b.a.f.getAll(a,q);return c===H?H:c[d]},set:function(a,d,c){c===H&&b.a.f.getAll(a,q)===H||(b.a.f.getAll(a,l)[d]=c)},getAll:function(b,f){var g=b[d];if(!g||!("null"!==g&&c[g])){if(!f)return H; +g=b[d]="ko"+a++;c[g]={}}return c[g]},clear:function(a){var b=a[d];return b?(delete c[b],a[d]=n,l):q}}};b.b("utils.domData",b.a.f);b.b("utils.domData.clear",b.a.f.clear);b.a.F=new function(){function a(a,d){var e=b.a.f.get(a,c);e===H&&d&&(e=[],b.a.f.set(a,c,e));return e}function d(c){var e=a(c,q);if(e)for(var e=e.slice(0),j=0;j",""]||!c.indexOf("",""]||(!c.indexOf("",""]||[0,"",""];a="ignored
      "+c[1]+a+c[2]+"
      ";for("function"==typeof w.innerShiv?d.appendChild(w.innerShiv(a)):d.innerHTML=a;c[0]--;)d=d.lastChild;d=b.a.L(d.lastChild.childNodes)}return d};b.a.ca=function(a,d){b.a.ka(a);d=b.a.d(d);if(d!==n&&d!==H)if("string"!=typeof d&&(d=d.toString()),"undefined"!=typeof E)E(a).html(d);else for(var c= +b.a.sa(d),e=0;e"},gb:function(a,b){var c=Q[a];c===H&&i(Error("Couldn't find any memo with ID "+a+". Perhaps it's already been unmemoized.")); +try{return c.apply(n,b||[]),l}finally{delete Q[a]}},hb:function(a,d){var c=[];ba(a,c);for(var e=0,f=c.length;ec;c++)a=a();return a})};b.toJSON=function(a,d,c){a=b.fb(a);return b.a.wa(a,d,c)};b.b("toJS",b.fb);b.b("toJSON",b.toJSON);b.k={q:function(a){switch(b.a.u(a)){case "option":return a.__ko__hasDomDataOptionValue__=== +l?b.a.f.get(a,b.c.options.ra):7>=b.a.Z?a.getAttributeNode("value").specified?a.value:a.text:a.value;case "select":return 0<=a.selectedIndex?b.k.q(a.options[a.selectedIndex]):H;default:return a.value}},T:function(a,d){switch(b.a.u(a)){case "option":switch(typeof d){case "string":b.a.f.set(a,b.c.options.ra,H);"__ko__hasDomDataOptionValue__"in a&&delete a.__ko__hasDomDataOptionValue__;a.value=d;break;default:b.a.f.set(a,b.c.options.ra,d),a.__ko__hasDomDataOptionValue__=l,a.value="number"===typeof d? +d:""}break;case "select":for(var c=a.options.length-1;0<=c;c--)if(b.k.q(a.options[c])==d){a.selectedIndex=c;break}break;default:if(d===n||d===H)d="";a.value=d}}};b.b("selectExtensions",b.k);b.b("selectExtensions.readValue",b.k.q);b.b("selectExtensions.writeValue",b.k.T);var ja=/\@ko_token_(\d+)\@/g,ma=["true","false"],na=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i;b.g={Q:[],aa:function(a){var d=b.a.D(a);if(3>d.length)return[];"{"===d.charAt(0)&&(d=d.substring(1,d.length-1));for(var a=[], +c=n,e,f=0;f$/:/^\s*ko(?:\s+(.+\s*\:[\s\S]*))?\s*$/,ha=J?/^<\!--\s*\/ko\s*--\>$/: +/^\s*\/ko\s*$/,oa={ul:l,ol:l};b.e={I:{},childNodes:function(a){return A(a)?$(a):a.childNodes},Y:function(a){if(A(a))for(var a=b.e.childNodes(a),d=0,c=a.length;d=b.a.Z&&e in ea?(e=ea[e],g?a.removeAttribute(e): +a[e]=f):g||a.setAttribute(e,f.toString());"name"===e&&b.a.$a(a,g?"":f.toString())}}};b.c.checked={init:function(a,d,c){b.a.n(a,"click",function(){var e;if("checkbox"==a.type)e=a.checked;else if("radio"==a.type&&a.checked)e=a.value;else return;var f=d(),g=b.a.d(f);"checkbox"==a.type&&g instanceof Array?(e=b.a.i(g,a.value),a.checked&&0>e?f.push(a.value):!a.checked&&0<=e&&f.splice(e,1)):b.g.ea(f,c,"checked",e,l)});"radio"==a.type&&!a.name&&b.c.uniqueName.init(a,t(l))},update:function(a,d){var c=b.a.d(d()); +"checkbox"==a.type?a.checked=c instanceof Array?0<=b.a.i(c,a.value):c:"radio"==a.type&&(a.checked=a.value==c)}};b.c.css={update:function(a,d){var c=b.a.d(d());if("object"==typeof c)for(var e in c){var f=b.a.d(c[e]);b.a.da(a,e,f)}else c=String(c||""),b.a.da(a,a.__ko__cssValue,q),a.__ko__cssValue=c,b.a.da(a,c,l)}};b.c.enable={update:function(a,d){var c=b.a.d(d());c&&a.disabled?a.removeAttribute("disabled"):!c&&!a.disabled&&(a.disabled=l)}};b.c.disable={update:function(a,d){b.c.enable.update(a,function(){return!b.a.d(d())})}}; +b.c.event={init:function(a,d,c,e){var f=d()||{},g;for(g in f)(function(){var f=g;"string"==typeof f&&b.a.n(a,f,function(a){var g,m=d()[f];if(m){var p=c();try{var r=b.a.L(arguments);r.unshift(e);g=m.apply(e,r)}finally{g!==l&&(a.preventDefault?a.preventDefault():a.returnValue=q)}p[f+"Bubble"]===q&&(a.cancelBubble=l,a.stopPropagation&&a.stopPropagation())}})})()}};b.c.foreach={Ra:function(a){return function(){var d=a(),c=b.a.ta(d);if(!c||"number"==typeof c.length)return{foreach:d,templateEngine:b.C.na}; +b.a.d(d);return{foreach:c.data,as:c.as,includeDestroyed:c.includeDestroyed,afterAdd:c.afterAdd,beforeRemove:c.beforeRemove,afterRender:c.afterRender,beforeMove:c.beforeMove,afterMove:c.afterMove,templateEngine:b.C.na}}},init:function(a,d){return b.c.template.init(a,b.c.foreach.Ra(d))},update:function(a,d,c,e,f){return b.c.template.update(a,b.c.foreach.Ra(d),c,e,f)}};b.g.Q.foreach=q;b.e.I.foreach=l;b.c.hasfocus={init:function(a,d,c){function e(e){a.__ko_hasfocusUpdating=l;var f=a.ownerDocument;"activeElement"in +f&&(e=f.activeElement===a);f=d();b.g.ea(f,c,"hasfocus",e,l);a.__ko_hasfocusUpdating=q}var f=e.bind(n,l),g=e.bind(n,q);b.a.n(a,"focus",f);b.a.n(a,"focusin",f);b.a.n(a,"blur",g);b.a.n(a,"focusout",g)},update:function(a,d){var c=b.a.d(d());a.__ko_hasfocusUpdating||(c?a.focus():a.blur(),b.r.K(b.a.Aa,n,[a,c?"focusin":"focusout"]))}};b.c.html={init:function(){return{controlsDescendantBindings:l}},update:function(a,d){b.a.ca(a,d())}};var ca="__ko_withIfBindingData";P("if");P("ifnot",q,l);P("with",l,q,function(a, +b){return a.createChildContext(b)});b.c.options={update:function(a,d,c){"select"!==b.a.u(a)&&i(Error("options binding applies only to SELECT elements"));for(var e=0==a.length,f=b.a.V(b.a.fa(a.childNodes,function(a){return a.tagName&&"option"===b.a.u(a)&&a.selected}),function(a){return b.k.q(a)||a.innerText||a.textContent}),g=a.scrollTop,h=b.a.d(d());0/g;b.ya={ub:function(a, +d,c){d.isTemplateRewritten(a,c)||d.rewriteTemplate(a,function(a){return b.ya.Fb(a,d)},c)},Fb:function(a,b){return a.replace(pa,function(a,e,f,g,h,j,k){return V(k,e,b)}).replace(qa,function(a,e){return V(e,"<\!-- ko --\>",b)})},jb:function(a){return b.s.qa(function(d,c){d.nextSibling&&b.Ea(d.nextSibling,a,c)})}};b.b("__tr_ambtns",b.ya.jb);b.l={};b.l.h=function(a){this.h=a};b.l.h.prototype.text=function(){var a=b.a.u(this.h),a="script"===a?"text":"textarea"===a?"value":"innerHTML";if(0==arguments.length)return this.h[a]; +var d=arguments[0];"innerHTML"===a?b.a.ca(this.h,d):this.h[a]=d};b.l.h.prototype.data=function(a){if(1===arguments.length)return b.a.f.get(this.h,"templateSourceData_"+a);b.a.f.set(this.h,"templateSourceData_"+a,arguments[1])};b.l.O=function(a){this.h=a};b.l.O.prototype=new b.l.h;b.l.O.prototype.text=function(){if(0==arguments.length){var a=b.a.f.get(this.h,"__ko_anon_template__")||{};a.za===H&&a.ia&&(a.za=a.ia.innerHTML);return a.za}b.a.f.set(this.h,"__ko_anon_template__",{za:arguments[0]})};b.l.h.prototype.nodes= +function(){if(0==arguments.length)return(b.a.f.get(this.h,"__ko_anon_template__")||{}).ia;b.a.f.set(this.h,"__ko_anon_template__",{ia:arguments[0]})};b.b("templateSources",b.l);b.b("templateSources.domElement",b.l.h);b.b("templateSources.anonymousTemplate",b.l.O);var N;b.va=function(a){a!=H&&!(a instanceof b.v)&&i(Error("templateEngine must inherit from ko.templateEngine"));N=a};b.ua=function(a,d,c,e,f){c=c||{};(c.templateEngine||N)==H&&i(Error("Set a template engine before calling renderTemplate")); +f=f||"replaceChildren";if(e){var g=M(e);return b.j(function(){var h=d&&d instanceof b.z?d:new b.z(b.a.d(d)),j="function"==typeof a?a(h.$data,h):a,h=S(e,f,j,h,c);"replaceNode"==f&&(e=h,g=M(e))},n,{Ja:function(){return!g||!b.a.X(g)},W:g&&"replaceNode"==f?g.parentNode:g})}return b.s.qa(function(e){b.ua(a,d,c,e,"replaceNode")})};b.Lb=function(a,d,c,e,f){function g(a,b){T(b,j);c.afterRender&&c.afterRender(b,a)}function h(d,e){j=f.createChildContext(b.a.d(d),c.as);j.$index=e;var g="function"==typeof a? +a(d,j):a;return S(n,"ignoreTargetNode",g,j,c)}var j;return b.j(function(){var a=b.a.d(d)||[];"undefined"==typeof a.length&&(a=[a]);a=b.a.fa(a,function(a){return c.includeDestroyed||a===H||a===n||!b.a.d(a._destroy)});b.r.K(b.a.Za,n,[e,a,h,c,g])},n,{W:e})};b.c.template={init:function(a,d){var c=b.a.d(d());if("string"!=typeof c&&!c.name&&(1==a.nodeType||8==a.nodeType))c=1==a.nodeType?a.childNodes:b.e.childNodes(a),c=b.a.Gb(c),(new b.l.O(a)).nodes(c);return{controlsDescendantBindings:l}},update:function(a, +d,c,e,f){var d=b.a.d(d()),c={},e=l,g,h=n;"string"!=typeof d&&(c=d,d=c.name,"if"in c&&(e=b.a.d(c["if"])),e&&"ifnot"in c&&(e=!b.a.d(c.ifnot)),g=b.a.d(c.data));"foreach"in c?h=b.Lb(d||a,e&&c.foreach||[],c,a,f):e?(f="data"in c?f.createChildContext(g,c.as):f,h=b.ua(d||a,f,c,a)):b.e.Y(a);f=h;(g=b.a.f.get(a,"__ko__templateComputedDomDataKey__"))&&"function"==typeof g.B&&g.B();b.a.f.set(a,"__ko__templateComputedDomDataKey__",f&&f.oa()?f:H)}};b.g.Q.template=function(a){a=b.g.aa(a);return 1==a.length&&a[0].unknown|| +b.g.Db(a,"name")?n:"This template engine does not support anonymous templates nested within its templates"};b.e.I.template=l;b.b("setTemplateEngine",b.va);b.b("renderTemplate",b.ua);b.a.Ia=function(a,b,c){a=a||[];b=b||[];return a.length<=b.length?R(a,b,"added","deleted",c):R(b,a,"deleted","added",c)};b.b("utils.compareArrays",b.a.Ia);b.a.Za=function(a,d,c,e,f){function g(a,b){s=k[b];v!==b&&(y[a]=s);s.ma(v++);L(s.M);r.push(s);z.push(s)}function h(a,c){if(a)for(var d=0,e=c.length;db.a.Z)&&a.nodes?a.nodes():n;if(d)return b.a.L(d.cloneNode(l).childNodes);a=a.text();return b.a.sa(a)};b.C.na=new b.C;b.va(b.C.na);b.b("nativeTemplateEngine",b.C);b.pa=function(){var a=this.Cb=function(){if("undefined"==typeof E||!E.tmpl)return 0;try{if(0<=E.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch(a){}return 1}();this.renderTemplateSource=function(b,c,e){e=e||{};2>a&&i(Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.")); +var f=b.data("precompiled");f||(f=b.text()||"",f=E.template(n,"{{ko_with $item.koBindingContext}}"+f+"{{/ko_with}}"),b.data("precompiled",f));b=[c.$data];c=E.extend({koBindingContext:c},e.templateOptions);c=E.tmpl(f,b,c);c.appendTo(x.createElement("div"));E.fragments={};return c};this.createJavaScriptEvaluatorBlock=function(a){return"{{ko_code ((function() { return "+a+" })()) }}"};this.addTemplate=function(a,b){x.write("

      B9nbGq)wE{L7OT)zIGeqpq=Qeo%(Q7u6 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