From fc5fa113bb4c3f9238641171d6bcbe923f4a27d6 Mon Sep 17 00:00:00 2001 From: Marko Lahma Date: Mon, 2 Dec 2013 19:28:33 +0200 Subject: [PATCH] SPRNET-1561 ASP.NET MVC 5 and WEB API 2 support * also add .NET 4.5 targets * fix issues with libs and build targets --- .gitignore | 3 +- .nuget/NuGet.Config | 6 + .nuget/NuGet.exe | Bin 0 -> 1611264 bytes .nuget/NuGet.targets | 136 + Spring.Net.2010.sln | 31 + Spring.build | 138 +- Spring.include | 31 + build-support/solutions.build.nant | 34 +- common-project.include | 42 +- doc/reference/src/index.xml | 1 - .../Spring.Mvc5QuickStart.sln | 25 + .../App_Start/BundleConfig.cs | 40 + .../App_Start/FilterConfig.cs | 13 + .../App_Start/RouteConfig.cs | 30 + .../Config/child_controllers.xml | 8 + .../Config/controllers.xml | 22 + .../Spring.Mvc5QuickStart/Config/objects.xml | 11 + .../Spring.Mvc5QuickStart/Content/Site.css | 769 + .../themes/base/images/animated-overlay.gif | Bin 0 -> 1738 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/themes/base/jquery-ui.css | 1188 ++ .../themes/base/jquery.ui.accordion.css | 38 + .../Content/themes/base/jquery.ui.all.css | 12 + .../themes/base/jquery.ui.autocomplete.css | 16 + .../Content/themes/base/jquery.ui.base.css | 25 + .../Content/themes/base/jquery.ui.button.css | 114 + .../Content/themes/base/jquery.ui.core.css | 93 + .../themes/base/jquery.ui.datepicker.css | 178 + .../Content/themes/base/jquery.ui.dialog.css | 69 + .../Content/themes/base/jquery.ui.menu.css | 79 + .../themes/base/jquery.ui.progressbar.css | 28 + .../themes/base/jquery.ui.resizable.css | 78 + .../themes/base/jquery.ui.selectable.css | 15 + .../Content/themes/base/jquery.ui.slider.css | 73 + .../Content/themes/base/jquery.ui.spinner.css | 65 + .../Content/themes/base/jquery.ui.tabs.css | 52 + .../Content/themes/base/jquery.ui.theme.css | 406 + .../Content/themes/base/jquery.ui.tooltip.css | 19 + .../base/minified/images/animated-overlay.gif | Bin 0 -> 1738 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 .../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 | 4 + .../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 + .../base/minified/jquery.ui.menu.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.spinner.min.css | 5 + .../base/minified/jquery.ui.tabs.min.css | 5 + .../base/minified/jquery.ui.theme.min.css | 5 + .../base/minified/jquery.ui.tooltip.min.css | 5 + .../Controllers/AccountController.cs | 201 + .../Controllers/CountController.cs | 25 + .../Controllers/HomeController.cs | 34 + .../Controllers/OdataController.cs | 51 + .../Controllers/SuffixController.cs | 38 + .../Controllers/SuffixNestedController.cs | 41 + .../Controllers/ValuesController.cs | 36 + .../Spring.Mvc5QuickStart/Counter.cs | 14 + .../Spring.Mvc5QuickStart/Global.asax | 1 + .../Spring.Mvc5QuickStart/Global.asax.cs | 40 + .../Images/NuGetGallery.png | Bin 0 -> 4144 bytes .../Spring.Mvc5QuickStart/Images/accent.png | Bin 0 -> 528 bytes .../Images/aspNetHome.png | Bin 0 -> 3736 bytes .../Spring.Mvc5QuickStart/Images/bullet.png | Bin 0 -> 2867 bytes .../Spring.Mvc5QuickStart/Images/facebook.png | Bin 0 -> 529 bytes .../Images/findHosting.png | Bin 0 -> 4329 bytes .../Images/heroAccent.png | Bin 0 -> 572 bytes .../Images/orderedList0.png | Bin 0 -> 3424 bytes .../Images/orderedList1.png | Bin 0 -> 653 bytes .../Images/orderedList2.png | Bin 0 -> 733 bytes .../Images/orderedList3.png | Bin 0 -> 772 bytes .../Images/orderedList4.png | Bin 0 -> 3355 bytes .../Images/orderedList5.png | Bin 0 -> 3361 bytes .../Images/orderedList6.png | Bin 0 -> 3757 bytes .../Images/orderedList7.png | Bin 0 -> 3651 bytes .../Images/orderedList8.png | Bin 0 -> 3467 bytes .../Images/orderedList9.png | Bin 0 -> 3446 bytes .../Spring.Mvc5QuickStart/Images/twitter.png | Bin 0 -> 488 bytes .../Images/windowsLive.png | Bin 0 -> 3302 bytes .../Models/AccountModels.cs | 62 + .../Properties/AssemblyInfo.cs | 35 + .../Scripts/_references.js | 7 + .../Scripts/jquery-1.10.2.intellisense.js | 2657 +++ .../Scripts/jquery-1.10.2.js | 9789 ++++++++++ .../Scripts/jquery-1.10.2.min.js | 6 + .../Scripts/jquery-1.10.2.min.map | 1 + .../Scripts/jquery-ui-1.10.3.js | 15003 ++++++++++++++++ .../Scripts/jquery-ui-1.10.3.min.js | 12 + .../Scripts/jquery.unobtrusive-ajax.js | 152 + .../Scripts/jquery.unobtrusive-ajax.min.js | 19 + .../Scripts/jquery.validate-vsdoc.js | 1288 ++ .../Scripts/jquery.validate.js | 1231 ++ .../Scripts/jquery.validate.min.js | 2 + .../Scripts/jquery.validate.unobtrusive.js | 344 + .../jquery.validate.unobtrusive.min.js | 19 + .../Scripts/knockout-2.0.0.js | 129 + .../Scripts/knockout-3.0.0.debug.js | 4225 +++++ .../Scripts/knockout-3.0.0.js | 94 + .../Scripts/modernizr-2.6.2.js | 1393 ++ .../Spring.Mvc5QuickStart.csproj | 344 + .../Views/Account/ChangePassword.cshtml | 41 + .../Account/ChangePasswordSuccess.cshtml | 8 + .../Views/Account/Login.cshtml | 40 + .../Views/Account/Register.cshtml | 45 + .../Views/Count/Index.cshtml | 2 + .../Views/Home/About.cshtml | 34 + .../Views/Home/Contact.cshtml | 50 + .../Views/Home/Index.cshtml | 40 + .../Views/Shared/Error.cshtml | 10 + .../Views/Shared/_Layout.cshtml | 54 + .../Views/Shared/_LoginPartial.cshtml | 11 + .../Spring.Mvc5QuickStart/Views/Web.config | 59 + .../Views/_ViewStart.cshtml | 3 + .../Spring.Mvc5QuickStart/Web.Debug.config | 30 + .../Spring.Mvc5QuickStart/Web.Release.config | 31 + .../Spring.Mvc5QuickStart/Web.config | 112 + .../Spring.Mvc5QuickStart/favicon.ico | Bin 0 -> 32038 bytes .../Spring.Mvc5QuickStart/packages.config | 29 + lib/Net/3.5/Apache.NMS.dll | Bin 73728 -> 73728 bytes lib/Net/4.0/Apache.NMS.dll | Bin 64512 -> 64512 bytes src/Spring/CommonAssemblyInfo.cs | 6 +- src/Spring/Spring.Aop/Spring.Aop.nuspec | 3 + .../AssemblyObjectDefinitionScanner.cs | 3 +- src/Spring/Spring.Core/Spring.Core.nuspec | 3 + .../Spring.Data.NHibernate32.nuspec | 3 + .../Spring.Data.NHibernate33.nuspec | 3 + src/Spring/Spring.Data/Spring.Data.nuspec | 3 + .../Spring.Messaging.Ems.build | 3 +- .../Spring.Messaging.Ems.nuspec | 3 + .../Spring.Messaging.Nms.nuspec | 3 + .../Spring.Messaging/Spring.Messaging.nuspec | 3 + .../Spring.Scheduling.Quartz21.nuspec | 3 + .../Spring.Services/Spring.Services.nuspec | 3 + .../Spring.Template.Velocity.nuspec | 3 + .../Spring.Testing.Microsoft.nuspec | 3 + .../Spring.Testing.NUnit.nuspec | 3 + ...pring.Web.Conversation.NHibernate32.nuspec | 3 + ...pring.Web.Conversation.NHibernate33.nuspec | 3 + .../Spring.Web.Extensions.nuspec | 3 + .../Spring.Web.Mvc3/Spring.Web.Mvc3.nuspec | 3 + .../Spring.Web.Mvc4/Spring.Web.Mvc4.nuspec | 3 + .../Spring.Web.Mvc4/SpringMvcApplication.cs | 26 +- .../Spring.Web.Mvc5.2010.csproj | 148 + .../Spring.Web.Mvc5/Spring.Web.Mvc5.build | 59 + .../Spring.Web.Mvc5/Spring.Web.Mvc5.nuspec | 25 + src/Spring/Spring.Web.Mvc5/packages.config | 11 + src/Spring/Spring.Web/Spring.Web.nuspec | 3 + .../CodeConfigApplicationContextTests.cs | 56 +- .../Spring.Scheduling.Quartz21.Tests.build | 1 + .../Spring.Testing.Microsoft.Tests.build | 2 +- .../Spring.Web.Mvc3.Tests.build | 4 +- .../Spring.Web.Mvc4.Tests.build | 4 +- .../Spring.Web.Mvc5.Tests.2010.csproj | 141 + .../Spring.Web.Mvc5.Tests.build | 106 + .../Spring.Web.Mvc5.Tests/packages.config | 7 + 185 files changed, 42422 insertions(+), 96 deletions(-) create mode 100644 .nuget/NuGet.Config create mode 100644 .nuget/NuGet.exe create mode 100644 .nuget/NuGet.targets create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart.sln create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/App_Start/BundleConfig.cs create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/App_Start/FilterConfig.cs create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/App_Start/RouteConfig.cs create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Config/child_controllers.xml create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Config/controllers.xml create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Config/objects.xml create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/Site.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/animated-overlay.gif create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-icons_222222_256x240.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-icons_2e83ff_256x240.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-icons_454545_256x240.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-icons_888888_256x240.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-icons_cd0a0a_256x240.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery-ui.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.accordion.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.all.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.autocomplete.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.base.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.button.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.core.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.datepicker.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.dialog.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.menu.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.progressbar.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.resizable.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.selectable.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.slider.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.spinner.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.tabs.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.theme.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.tooltip.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/animated-overlay.gif create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-icons_222222_256x240.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-icons_2e83ff_256x240.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-icons_454545_256x240.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-icons_888888_256x240.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-icons_cd0a0a_256x240.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery-ui.min.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.accordion.min.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.autocomplete.min.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.button.min.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.core.min.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.datepicker.min.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.dialog.min.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.menu.min.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.progressbar.min.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.resizable.min.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.selectable.min.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.slider.min.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.spinner.min.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.tabs.min.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.theme.min.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.tooltip.min.css create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/AccountController.cs create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/CountController.cs create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/HomeController.cs create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/OdataController.cs create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/SuffixController.cs create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/SuffixNestedController.cs create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/ValuesController.cs create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Counter.cs create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Global.asax create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Global.asax.cs create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/NuGetGallery.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/accent.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/aspNetHome.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/bullet.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/facebook.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/findHosting.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/heroAccent.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList0.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList1.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList2.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList3.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList4.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList5.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList6.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList7.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList8.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList9.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/twitter.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/windowsLive.png create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Models/AccountModels.cs create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Properties/AssemblyInfo.cs create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/_references.js create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/jquery-1.10.2.intellisense.js create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/jquery-1.10.2.js create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/jquery-1.10.2.min.js create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/jquery-1.10.2.min.map create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/jquery-ui-1.10.3.js create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/jquery-ui-1.10.3.min.js create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/jquery.unobtrusive-ajax.js create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/jquery.unobtrusive-ajax.min.js create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/jquery.validate-vsdoc.js create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/jquery.validate.js create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/jquery.validate.min.js create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/jquery.validate.unobtrusive.js create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/jquery.validate.unobtrusive.min.js create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/knockout-2.0.0.js create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/knockout-3.0.0.debug.js create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/knockout-3.0.0.js create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/modernizr-2.6.2.js create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart.csproj create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Views/Account/ChangePassword.cshtml create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Views/Account/ChangePasswordSuccess.cshtml create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Views/Account/Login.cshtml create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Views/Account/Register.cshtml create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Views/Count/Index.cshtml create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Views/Home/About.cshtml create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Views/Home/Contact.cshtml create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Views/Home/Index.cshtml create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Views/Shared/Error.cshtml create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Views/Shared/_Layout.cshtml create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Views/Shared/_LoginPartial.cshtml create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Views/Web.config create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Views/_ViewStart.cshtml create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Web.Debug.config create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Web.Release.config create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Web.config create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/favicon.ico create mode 100644 examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/packages.config create mode 100644 src/Spring/Spring.Web.Mvc5/Spring.Web.Mvc5.2010.csproj create mode 100644 src/Spring/Spring.Web.Mvc5/Spring.Web.Mvc5.build create mode 100644 src/Spring/Spring.Web.Mvc5/Spring.Web.Mvc5.nuspec create mode 100644 src/Spring/Spring.Web.Mvc5/packages.config create mode 100644 test/Spring/Spring.Web.Mvc5.Tests/Spring.Web.Mvc5.Tests.2010.csproj create mode 100644 test/Spring/Spring.Web.Mvc5.Tests/Spring.Web.Mvc5.Tests.build create mode 100644 test/Spring/Spring.Web.Mvc5.Tests/packages.config diff --git a/.gitignore b/.gitignore index 011e714b..34b9caae 100644 --- a/.gitignore +++ b/.gitignore @@ -70,8 +70,9 @@ PrecompiledWeb /src/Spring/Spring.Web.Mvc/Spring.Web.Mvc.xml /src/Spring/Spring.Web.Mvc3/Spring.Web.Mvc3.xml /src/Spring/Spring.Web.Mvc4/Spring.Web.Mvc4.xml +/src/Spring/Spring.Web.Mvc5/Spring.Web.Mvc5.xml /src/Spring/Spring.Testing.NUnit/Spring.Testing.NUnit.xml /src/Spring/Spring.Services/Spring.Services.xml /src/Spring/Spring.Web.Extensions/Spring.Web.Extensions.xml /src/Spring/GenCommonAssemblyInfo.cs -/.project +/.project diff --git a/.nuget/NuGet.Config b/.nuget/NuGet.Config new file mode 100644 index 00000000..67f8ea04 --- /dev/null +++ b/.nuget/NuGet.Config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.nuget/NuGet.exe b/.nuget/NuGet.exe new file mode 100644 index 0000000000000000000000000000000000000000..8f613402956f9802681f150b1cb51f8400eb628e GIT binary patch literal 1611264 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
AXHh>@<2QYNztwsT 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

Q#DE^h+og#6qzgBXJRF3#s$tjY1{%a+tNVkRI zS9*7%cpoD9eXZn_Qey4bN=_+Bj7w1HYQ=Y@z6+ANaXf$;P_*+!+rBxG zP%3zC3b(H1ta&i<}b?^&5l_DGJ zFN>^5NtZ8+tjNpAFO4iDC-Tc8D>AhC%OWe%be_m&ieUI79>NZjBPM>d9v#@@&p*W? z^Muozeg5e-G)-MdK-7%yiQ4ANqG|GRd5xxsP2apmQ$%G*UZW}EF*2{w6p@&a*Jz3u%*<;vCF@7! zHJXy$MYmg?a*3kbB<3}mlC5{#yZKQh;=(q~!AN^A<_TI6R1xWS2MnXcG?em|IBGG~QPe_sK?fFkgk?cS6pO7Nmb@2Dh z=jT@>ynX%?Qlxxz{u5FpecjhcNYus0^Pi9+@qgt%Aw}xzl>d(wX&syWAYYBk-pV=i=;?eO5P$VQgtqGkrWB~ zGjEX;Y56N}krc^LRmfA0Q0lyjd5fgvc(c4kQgXKgks8~PbKS|of#_MH?$Y;=5y$*7 z==q_CiJMb=8Ga&K%e+U^=J+}Ji5?(r`10sN3evwcx*`t-6~FM=70GD#rO_1`nf#^E z6=~W1rO_3+dHJQ$6$xrq=?h<-B1-{Z9$nNei@!9wB41~|G`b>b-+V(aY;KY1MP?KZ zV!{UBORh&o$$xD*)#CF`)k;*KyhaI--18PiNY3cIL{X$=MqZ*Q60$fiQ531zl$R)q zBpk_06eagx%1aa_$3M+W6eX7z5W{6Y_vhb@D7m>oUZN;DxC>Ft#Epp_qX5WV zQ?#cB87_DIh~uu(08W>ymd`s~o0Gl1BwBzpKJU>)j*iG{G$mIr&ucU#XCKXLG$nUu z<~5pwd5xyzdY`;TQ*!=XqM80z&eu8_ zh~Co#PPY8qleM}2PTnI0NR_JQ@k%1cf1kHVN`4=gw@6BEKbW^jN?y;-TO=i?H>#GW z7op^H*Stkia(P1DA}M+NeqJMq9BxrPPtT;}Z|A&4QgZiBA~pN>46A>{^`p@m1~urs z)ITA2m7ss*! zpClC7GF9gzUnr8+H$O=zayK!5NeC%inV%#SnLL)CBoqmKK@#8T3)8=enbu2Oe?(RJ znpok#G_qDoo8~_eMquSP5h1B#^OuMss|oo_M3L5C^OuMsuQ&3Sh$68DCi(irip;9> zmxv;@j`>SOk=yC{O+-lU>ii|5$nL@XC89|09TMr=0SlVwqV>a%LD7_k^D98=DC<(n zUmG+l?~lfKXh%wFEzJJ1cU}O)AAQlW%GF}X@P8-WU&IM}6&NmGbp3lC}HXqUPgrO1}u~QJ=|xzD7dY(rWeBO)x+*F#C#kC`zaw zzFvY#*|g{DC8(52^&5P(M^?(Cu&dI>6JP#5#B_Q*=@xF@(ua z5{;@6m=$n7{jV$kS43?wRHfm6-1`5VKmaQqL~qO>l1oQTpwT=Yc;?@E?WaV9EEUGGGcZ2O55Q8H%WU>xR{tNwDt zLm^A7>6JVauPy&LK_2*K9UEbltpM;7egIqSd)?m(jKE*~tU#DN{0`r`hUj?)Z zY5yvq?YQ$!-@3@OF#c6QJJjM|1+-Sf?((gRXw#PaS%Fx-4*x2keZ2K<-@1rabPX!V zi#u^XD`#}bW@@Gkl*1R1(@EuEIm=3Z0KvS7SE+)Q6})_iD*z)f+zo(Ou^Q(9v{LJx z1JDY6-#GxS%paWt(2Cr7kK?aEEAe&b0JH+F&H>2sv&tO50>jG>I0qn06V3t1!gm00 zZLZ593IB%j{^j7tB;vgiMUojoH1Gim-&AU0i*276YFo$%TxC~CSap{@Au_4bo)Fpd zoIN2jW}iJFvgFtHgvgA)*%Klg`VX`9oydR(>^(9>^ zo|FBRzm72)g>Ndgu*J5peIX<84ZA|Zsu%4Ekx6^)36VYjW>1KW`EPqdWXWglwbkWh z#vpq_CL8Ptkpa)y6%wuAWlxBj{ylp_)b9U<&;V<0A_>qE)rmsa!rP}nffz91R#u6;qW;=Bj3DbrGN9)Zi-Q)KnI`}HalP<&A7#Vtmx zb|Pj3{>#3Yu%X{5n~fwFs_lxA3Gdn!BM&YfZL^VNfnisS9B8#GMh4tnZnKfp|26i- zMEgImD@NTPGR9^jsrj!$?1JoZ&-vcXFYr+B?V+XB=Zx*MkP#T&S0T~Zrs9RDpWiB8 zh}!t6hl;j|x;L(PA!^!l#S2ld-YH&)T6F!mqHUtiJl$6z(U9%M3sE1siWlP7zim7& z3G3|xCj)Uj?$`TcO9NgnrI-;o-ghz4f-5HUQ7QFcN?*mO2|N2LMqT)0U&W{m!zcF9 zHtIutU&W{q$NMTqow#*UAC)pX_tn0NQ7;blRg9W(_QTl7B3WH>5Sttw8Z9`eK%Pxk zPb4Cdzh2lq|LcChjq?u9(!A+@z#4&9yoVLd{+8FUWWxV=4NKsKS|r}qVv@1e*hVaaon?YMP;5r}j}l&6yn zya}LD#n@jekYxqhyahA@zwr`Ktis2i^z4;s9d7atkXGU`?*M5nW_kxmtFg^HKw6I< zcn3%;a?w+sePvpc2fPFntMasWfV3{Fy#u6``7Qt-Dcv~qFb~R`HBEvAl9K~?9Ox;4 zf7vf^%NpJAW#217F1Fv5h}Bx1%h<(!S_#CA7YmRN)91dj?XXSIlVVTBjT|F4y633YQIS zJ_+b2{eiYD@7S=|hdKpW zh;lK5Sk7eNA5%z>>Z_1t^?p`*VI%NCsfEQ7ojJXvX3(beE3GiC!`-D7CeNQJtuPt; z)zS)+doPt%m@Im$w8G@Wzm-~8H2V*w6{e1!H>0GFLT$Sjg+H6GNLErs9FH#R`H`hr z|J+v*BXG^rMNveHo+(y@x`R@^w}l$BpjZ*=$=UTqP^cZVixr_xbQUW@O<48SA{Fub z2ftRdh}#ftD->(3NH;TL`fMS}UCaSZmySQlVSQtO9u-BUJAf7I8pHPfDmr4cnw zMUB8>XQHA(+nk6}vwq@4lp6PEC!*BEe&2A=!_?4nC!*9`!-*(0daV;tYWhDq6BP!0 z;6#+n`0PvvJxs~9G0~u7eHEj&TsW(bN~sx3Q0)3q z<~l|91npbI8jGEYFSB#pu z(ykaab+279YVLb>#i+^WJZtm2G1utxcEzaaW9^Dj^OF!8(6cH(6_DR0UtKbl!hwmH ztwaNhA#kf50ZaSWI}Ac<^6N)?e#kHUOm7e6D=zH$ zA-~kRo*(jS9K^%hyqb|Xu4nI}+Yb13B-6^_*3f#}`NM6ECTd$$mnE6;P) z3el3WZXl>ji`+m^ zdjs7-kfAkz2#!|%vvpoaU$KZ45V_5sh{ec*PDQcb$C;=w@XUn{8cgQh=tPu^8|Orn zOncgiC>gfFi71)%Z6~5+)ITh8(8FZX&CW!HL6e+_k~v>YrL+t&yGYmF(c5~cQMiM#Ns~CsLkgu>7y7mcYj~SsHKm7 zvkx?C?4kv?pKaqZqa7tfhSx6AjweS21eKgk^o8Q8Na;h|sTm`uzQ3 z$sFzYA&Oj6yojYC|5s{JBXIpoC83I@JW@(gYRmFcic({KP)bp1%}1A)&{k^B=u(PO zd%jvqQEJeSODRe%x^P7aZROnm(Nc<1o92~Llp6J~C^~2i_M%UQrK!aKWY1B)r<@xH zwJ!2G<7M21Y+uaMyer&@8-Y8Vi;IR%bSh4*t#c|)O@7I#IJLXksW>(MmrljWg1}0L z-<`}D=v16+8RcADZ1Go|ij!5}bSh4!eIMet=6b&Q%LxyId%PG+ZcVVx*OENdE(qS~ zM9^Z}C97Nk7=cM{0EBT%oCA<^N1X$Zb$@maK;8{s?YI-kygKIq*Q>#W?^u_^NXNvheb?IK?KHOiu-v4K5eiOC)@fW=cw6a+*8hk$+peTgvqquIuj<#?p*KaoyoALoe7g&A2<^x zv+jSzQM1XaRnCOTsFTiw$)+i0gmGK_u(k=yKvSWN12Dry8iw!u-Y z!lEmkh>}BhIT0m;Dx8RtKeL>Ol0B=Oh>|;doQRS+$DN3hHy?Y=!FMHVu5cns&fMul zl#F>2qN9qdznrTYM&741lPem9C*kE@kUSlL6TAep*tXUmU?cD^egF$of9pLkd3?p| zp7$|XKFNDv(*}4CObfBsdtlm+A9)W<>+-2LJpXvKJ;VI~mU(L2dtlnF7rh6jRr?iy zA9H7f#)H5$^74p3B?}@@7j6s$D*S`DEZ+U6qZ%XdRsX9IYq-(xYG@mO?RPb_l$UMt zSp{e}AMv{yTG1E$u7);szu(o+!v59oYG`lo+U&Cm&@W8*T@7vVM!&0}W&VdZapF-i z(`n7iMk3}BhXo$4;vbUNC;XOMBh`P4bI zoDcg2Pm8(QFL+u?Z9C2w@xoHd;ycgu&f3f20ROUI;Fi^F^1l)zaMbTg#Dac!hp*j5 zJ37MON@z`A_qP(-)W7&!2`%fRJAM5ow68DvTM4b~|M^=9ZS9wL`PyByxEuYggm(8Y z{#HWkTe%zO-WD^E`K#rU92$d98pXf4KR*9Vr;UIs>h{`$vn=dMKVXf(C3`$?tys~q zUc=IE&i5LYmh#`chNW%1e6PoSOKTYM8kY8Nhu5&QcxSxjaVMA&Q14+S{yEQUSlY4g zc@0a;b^SghMHIJOa#N-3wjYlFB{8E;z-n=INA7|7DgcJN0kEvoB5#0qi5qXc~jW%*cAlpN)e5*6ABhLiFy^_+BV#F}=nugb|qO4no+y$PEN}z1j@~8U3ak z2y*$58wj%ayKW%J-~Vs}LFWF^4FoxR<^dPl$yv$8ZXn3h8{9yUq4xmdrqXCO0pqa& zj)ntcAauK3A&ZrdI~PXguTx=RV#=8?IXKIiFxmIKGhy;>y)$7lZnraGa_t>w!erU^ zoe7g)|KU_v#=-ZT36oQQawbeRefnS@K7m9%twkU1M@pzOA}R{j@-G2U(FCYcfh^W7 z@)i(hsvPpLg^Hct0g|y7Hhb1WvUs<5fMoWQhdpZ{*?#sB&j4uwR(S_VtFZWO&ss=J z@#sH#2q@O$FWv#tqBQ-JXDy_aX?({4;CKvxy=4v!YUv~St0!wy4A8PVTl@hw0yiJ^ zp~Yf_-tZon*65*D&s$8Z^n34tX`ME|>v@Z5rNZCx9GKSXciscjYJKo+&s$9Eb>yFY z02V8j_>Skmv}S+z9++0`>hA^uLyJu+@}K2K4&?mb8syz1K;T~hrsxt$X)u-r`|$TX zgfjxSc?T!fs>&-k+NhOY!O=2($16D6qrks<^eJeC273iZ+cVWGI9i zu`ZW>-=j}Kn=;BPI9ihD05>w9=K1@r#$#PUb}mM+pI`F!V)$=~JX$le?0LWY0afk| zlx0y)c@1d<^fpghDVC+&OGsLmrCvhP!u*?;khC(NJ?3Fw($Y-y5|Y;DSuY`JaenG0 zB(2URKk%?G88v;Fzq2bw zR-E@^n>|U*9|o~&@>O{_VxIC*nemyu&2k!w7Ho^|t*E8(Kd>ue1j>G5s}|ApHFiX( zk&4()

_vEU-9brq$&;EsL5F>D_ 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

#7`>6~`0&Cpsiw48uW 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 z%0D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

L{ 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 + + + $(MSBuildProjectDirectory)\..\ + + + false + + + false + + + true + + + false + + + + + + + + + + + $([System.IO.Path]::Combine($(SolutionDir), ".nuget")) + $([System.IO.Path]::Combine($(ProjectDir), "packages.config")) + + + + + $(SolutionDir).nuget + packages.config + + + + + $(NuGetToolsPath)\NuGet.exe + @(PackageSource) + + "$(NuGetExePath)" + mono --runtime=v4.0.30319 $(NuGetExePath) + + $(TargetDir.Trim('\\')) + + -RequireConsent + -NonInteractive + + "$(SolutionDir) " + "$(SolutionDir)" + + + $(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir) + $(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols + + + + RestorePackages; + $(BuildDependsOn); + + + + + $(BuildDependsOn); + BuildPackage; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Spring.Net.2010.sln b/Spring.Net.2010.sln index 401f9941..77feb567 100644 --- a/Spring.Net.2010.sln +++ b/Spring.Net.2010.sln @@ -99,6 +99,17 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Web.Conversation.NHi EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Web.Conversation.NHibernate33.Tests.2010", "test\Spring\Spring.Web.Conversation.NHibernate33.Tests\Spring.Web.Conversation.NHibernate33.Tests.2010.csproj", "{C57B05EA-FD1A-40EC-BB60-D2E45AB1A86A}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Web.Mvc5.2010", "src\Spring\Spring.Web.Mvc5\Spring.Web.Mvc5.2010.csproj", "{39AAD7EA-2ED0-4E50-8D4D-C666EA9CBFE4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Web.Mvc5.Tests.2010", "test\Spring\Spring.Web.Mvc5.Tests\Spring.Web.Mvc5.Tests.2010.csproj", "{B9590252-6D58-4587-950C-475AB61FDBCF}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{79F495DF-83D6-435E-A20E-47800F6F8FE7}" + ProjectSection(SolutionItems) = preProject + .nuget\NuGet.Config = .nuget\NuGet.Config + .nuget\NuGet.exe = .nuget\NuGet.exe + .nuget\NuGet.targets = .nuget\NuGet.targets + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|.NET = Debug|.NET @@ -549,6 +560,26 @@ Global {C57B05EA-FD1A-40EC-BB60-D2E45AB1A86A}.Release|Any CPU.Build.0 = Release|Any CPU {C57B05EA-FD1A-40EC-BB60-D2E45AB1A86A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {C57B05EA-FD1A-40EC-BB60-D2E45AB1A86A}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {39AAD7EA-2ED0-4E50-8D4D-C666EA9CBFE4}.Debug|.NET.ActiveCfg = Debug|Any CPU + {39AAD7EA-2ED0-4E50-8D4D-C666EA9CBFE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {39AAD7EA-2ED0-4E50-8D4D-C666EA9CBFE4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {39AAD7EA-2ED0-4E50-8D4D-C666EA9CBFE4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {39AAD7EA-2ED0-4E50-8D4D-C666EA9CBFE4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {39AAD7EA-2ED0-4E50-8D4D-C666EA9CBFE4}.Release|.NET.ActiveCfg = Release|Any CPU + {39AAD7EA-2ED0-4E50-8D4D-C666EA9CBFE4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {39AAD7EA-2ED0-4E50-8D4D-C666EA9CBFE4}.Release|Any CPU.Build.0 = Release|Any CPU + {39AAD7EA-2ED0-4E50-8D4D-C666EA9CBFE4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {39AAD7EA-2ED0-4E50-8D4D-C666EA9CBFE4}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {B9590252-6D58-4587-950C-475AB61FDBCF}.Debug|.NET.ActiveCfg = Debug|Any CPU + {B9590252-6D58-4587-950C-475AB61FDBCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B9590252-6D58-4587-950C-475AB61FDBCF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B9590252-6D58-4587-950C-475AB61FDBCF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {B9590252-6D58-4587-950C-475AB61FDBCF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {B9590252-6D58-4587-950C-475AB61FDBCF}.Release|.NET.ActiveCfg = Release|Any CPU + {B9590252-6D58-4587-950C-475AB61FDBCF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B9590252-6D58-4587-950C-475AB61FDBCF}.Release|Any CPU.Build.0 = Release|Any CPU + {B9590252-6D58-4587-950C-475AB61FDBCF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {B9590252-6D58-4587-950C-475AB61FDBCF}.Release|Mixed Platforms.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Spring.build b/Spring.build index 2e4fdb65..dec1c454 100644 --- a/Spring.build +++ b/Spring.build @@ -310,12 +310,21 @@ Commandline Examples: + --> + + + + @@ -353,6 +362,23 @@ Commandline Examples: + + + + + + + + + .NET 4.5 Build Skipped for Package + + + + + + + + @@ -396,15 +422,26 @@ Commandline Examples: - + + + + + + + + + + + - - + + + @@ -413,7 +450,7 @@ Commandline Examples: - + @@ -436,8 +473,9 @@ Commandline Examples: - - + + + @@ -450,8 +488,10 @@ Commandline Examples: - - + + + + @@ -472,7 +512,7 @@ Commandline Examples: + depends="set-net-3.5-runtime-configuration, check-spring-basedir, clean-current-bin-dir, restore-nuget-packages"> @@ -498,7 +538,7 @@ Commandline Examples: + depends="set-net-4.0-runtime-configuration, check-spring-basedir, clean-current-bin-dir, restore-nuget-packages"> @@ -524,6 +564,38 @@ Commandline Examples: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -580,8 +652,9 @@ Commandline Examples: - + + @@ -630,6 +703,24 @@ Commandline Examples: + + + + + + + + + + + + + + + + + + @@ -699,6 +790,8 @@ Commandline Examples: + + @@ -712,6 +805,8 @@ Commandline Examples: + + @@ -779,6 +874,8 @@ Commandline Examples: + + @@ -1012,6 +1109,8 @@ Commandline Examples: + + @@ -1039,6 +1138,16 @@ Commandline Examples: + + + + + + + + + + @@ -1377,6 +1486,10 @@ Commandline Examples: + + + + @@ -1631,6 +1744,7 @@ Commandline Examples: + @@ -1652,6 +1766,7 @@ Commandline Examples: + @@ -1686,6 +1801,7 @@ Commandline Examples: + diff --git a/Spring.include b/Spring.include index 0f8afbe5..43dd85a0 100644 --- a/Spring.include +++ b/Spring.include @@ -39,7 +39,16 @@ + + + + + + @@ -365,6 +374,28 @@ + + + + + + + + + + + + + + + + + + + diff --git a/build-support/solutions.build.nant b/build-support/solutions.build.nant index 079df9e0..44a3eeb4 100644 --- a/build-support/solutions.build.nant +++ b/build-support/solutions.build.nant @@ -101,7 +101,7 @@ Rebuilding Solutions using Nant and "solutions.build": - + @@ -117,6 +117,7 @@ Rebuilding Solutions using Nant and "solutions.build": + @@ -128,6 +129,23 @@ Rebuilding Solutions using Nant and "solutions.build": + + + + + + + + + + + + + + + + + @@ -152,5 +170,17 @@ Rebuilding Solutions using Nant and "solutions.build": - + + + + + + + + + + + + + diff --git a/common-project.include b/common-project.include index 314625bf..268da5cb 100644 --- a/common-project.include +++ b/common-project.include @@ -236,13 +236,16 @@ ${tool.dir} : dir for tools + + + - + @@ -265,7 +268,10 @@ ${tool.dir} : dir for tools - + + + + @@ -283,7 +289,7 @@ ${tool.dir} : dir for tools - + - - - - - - - - - + diff --git a/doc/reference/src/index.xml b/doc/reference/src/index.xml index ef8fe9de..80ba7965 100644 --- a/doc/reference/src/index.xml +++ b/doc/reference/src/index.xml @@ -615,7 +615,6 @@ Spring.NET for Java developers - This part of the reference documentation is for Java developers who would like a quick orientation to what is different between the Java and .NET versions of the framework. diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart.sln b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart.sln new file mode 100644 index 00000000..de582719 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.21005.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Spring.Mvc5QuickStart", "Spring.Mvc5QuickStart\Spring.Mvc5QuickStart.csproj", "{DF416FCD-EEB2-4811-8CEE-17E0E7D418E3}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + CodeCoverage|Any CPU = CodeCoverage|Any CPU + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DF416FCD-EEB2-4811-8CEE-17E0E7D418E3}.CodeCoverage|Any CPU.ActiveCfg = Release|Any CPU + {DF416FCD-EEB2-4811-8CEE-17E0E7D418E3}.CodeCoverage|Any CPU.Build.0 = Release|Any CPU + {DF416FCD-EEB2-4811-8CEE-17E0E7D418E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DF416FCD-EEB2-4811-8CEE-17E0E7D418E3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DF416FCD-EEB2-4811-8CEE-17E0E7D418E3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DF416FCD-EEB2-4811-8CEE-17E0E7D418E3}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/App_Start/BundleConfig.cs b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/App_Start/BundleConfig.cs new file mode 100644 index 00000000..838c3a5f --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/App_Start/BundleConfig.cs @@ -0,0 +1,40 @@ +using System.Web; +using System.Web.Optimization; + +namespace Spring.Mvc5QuickStart +{ + public class BundleConfig + { + public static void RegisterBundles(BundleCollection bundles) + { + bundles.Add(new ScriptBundle("~/bundles/jquery").Include( + "~/Scripts/jquery-1.*")); + + bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include( + "~/Scripts/jquery-ui*")); + + bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include( + "~/Scripts/jquery.unobtrusive*", + "~/Scripts/jquery.validate*")); + + bundles.Add(new ScriptBundle("~/bundles/modernizr").Include( + "~/Scripts/modernizr-*")); + + bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css")); + + bundles.Add(new StyleBundle("~/Content/themes/base/css").Include( + "~/Content/themes/base/jquery.ui.core.css", + "~/Content/themes/base/jquery.ui.resizable.css", + "~/Content/themes/base/jquery.ui.selectable.css", + "~/Content/themes/base/jquery.ui.accordion.css", + "~/Content/themes/base/jquery.ui.autocomplete.css", + "~/Content/themes/base/jquery.ui.button.css", + "~/Content/themes/base/jquery.ui.dialog.css", + "~/Content/themes/base/jquery.ui.slider.css", + "~/Content/themes/base/jquery.ui.tabs.css", + "~/Content/themes/base/jquery.ui.datepicker.css", + "~/Content/themes/base/jquery.ui.progressbar.css", + "~/Content/themes/base/jquery.ui.theme.css")); + } + } +} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/App_Start/FilterConfig.cs b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/App_Start/FilterConfig.cs new file mode 100644 index 00000000..a4d88c4e --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/App_Start/FilterConfig.cs @@ -0,0 +1,13 @@ +using System.Web; +using System.Web.Mvc; + +namespace Spring.Mvc5QuickStart +{ + public class FilterConfig + { + public static void RegisterGlobalFilters(GlobalFilterCollection filters) + { + filters.Add(new HandleErrorAttribute()); + } + } +} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/App_Start/RouteConfig.cs b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/App_Start/RouteConfig.cs new file mode 100644 index 00000000..ec02e91f --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/App_Start/RouteConfig.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Http; +using System.Web.Mvc; +using System.Web.Routing; + +namespace Spring.Mvc5QuickStart +{ + public class RouteConfig + { + public static void RegisterRoutes(RouteCollection routes) + { + routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); + + routes.MapHttpRoute( + name: "DefaultApi", + routeTemplate: "api/{controller}/{id}", + defaults: new { id = RouteParameter.Optional } + ); + + routes.MapRoute( + name: "Default", + url: "{controller}/{action}/{id}", + defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } + ); + } + } +} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Config/child_controllers.xml b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Config/child_controllers.xml new file mode 100644 index 00000000..ccb449d2 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Config/child_controllers.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Config/controllers.xml b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Config/controllers.xml new file mode 100644 index 00000000..2db776d0 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Config/controllers.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Config/objects.xml b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Config/objects.xml new file mode 100644 index 00000000..481e151e --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Config/objects.xml @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/Site.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/Site.css new file mode 100644 index 00000000..28a2b1ba --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/Site.css @@ -0,0 +1,769 @@ +html { + background-color: #e2e2e2; + margin: 0; + padding: 0; +} + +body { + background-color: #fff; + border-top: solid 10px #000; + color: #333; + font-size: .85em; + font-family: "Segoe UI", Verdana, Helvetica, Sans-Serif; + margin: 0; + padding: 0; +} + +a { + color: #333; + outline: none; + padding-left: 3px; + padding-right: 3px; + text-decoration: underline; +} + + a:link, a:visited, + a:active, a:hover { + color: #333; + } + + a:hover { + background-color: #c7d1d6; + } + +header, footer, hgroup, +nav, section { + display: block; +} + +mark { + background-color: #a6dbed; + padding-left: 5px; + padding-right: 5px; +} + +.float-left { + float: left; +} + +.float-right { + float: right; +} + +.clear-fix:after { + content: "."; + clear: both; + display: block; + height: 0; + visibility: hidden; +} + +h1, h2, h3, +h4, h5, h6 { + color: #000; + margin-bottom: 0; + padding-bottom: 0; +} + +h1 { + font-size: 2em; +} + +h2 { + font-size: 1.75em; +} + +h3 { + font-size: 1.2em; +} + +h4 { + font-size: 1.1em; +} + +h5, h6 { + font-size: 1em; +} + + +/* main layout +----------------------------------------------------------*/ +.content-wrapper { + margin: 0 auto; + max-width: 960px; +} + +#body { + background-color: #efeeef; + clear: both; + padding-bottom: 35px; +} + + .main-content { + background: url("../Images/accent.png") no-repeat; + padding-left: 10px; + padding-top: 30px; + } + + .featured + .main-content { + background: url("../Images/heroAccent.png") no-repeat; + } + +footer { + clear: both; + background-color: #e2e2e2; + font-size: .8em; + height: 100px; +} + + +/* site title +----------------------------------------------------------*/ +.site-title { + color: #c8c8c8; + font-family: Rockwell, Consolas, "Courier New", Courier, monospace; + font-size: 2.3em; + margin: 20px 0; +} + +.site-title a, .site-title a:hover, .site-title a:active { + background: none; + color: #c8c8c8; + outline: none; + text-decoration: none; +} + + +/* login +----------------------------------------------------------*/ +#login { + display: block; + font-size: .85em; + margin: 20px 0 12px; + text-align: right; +} + + #login a { + background-color: #d3dce0; + margin-left: 10px; + margin-right: 3px; + padding: 2px 3px; + text-decoration: none; + } + + #login a.username { + background: none; + margin-left: 0px; + text-decoration: underline; + } + + #login ul { + margin: 0; + } + + #login li { + display: inline; + list-style: none; + } + + +/* menu +----------------------------------------------------------*/ +ul#menu { + font-size: 1.3em; + font-weight: 600; + margin: 0; + text-align: right; +} + + ul#menu li { + display: inline; + list-style: none; + padding-left: 15px; + } + + ul#menu li a { + background: none; + color: #999; + text-decoration: none; + } + + ul#menu li a:hover { + color: #333; + text-decoration: none; + } + + +/* page elements +----------------------------------------------------------*/ +/* featured */ +.featured { + background-color: #fff; +} + + .featured .content-wrapper { + background-color: #7ac0da; + background-image: -ms-linear-gradient(left, #7ac0da 0%, #a4d4e6 100%); + background-image: -o-linear-gradient(left, #7ac0da 0%, #a4d4e6 100%); + background-image: -webkit-gradient(linear, left top, right top, color-stop(0, #7ac0da), color-stop(1, #a4d4e6)); + background-image: -webkit-linear-gradient(left, #7ac0da 0%, #a4d4e6 100%); + background-image: linear-gradient(left, #7ac0da 0%, #a4d4e6 100%); + color: #3e5667; + padding: 20px 40px 30px 40px; + } + + .featured hgroup.title h1, .featured hgroup.title h2 { + color: #fff; + } + + .featured p { + font-size: 1.1em; + } + +/* page titles */ +hgroup.title { + margin-bottom: 10px; +} + +hgroup.title h1, hgroup.title h2 { + display: inline; +} + +hgroup.title h2 { + font-weight: normal; + margin-left: 3px; +} + +/* features */ +section.feature { + width: 300px; + float: left; + padding: 10px; +} + +/* ordered list */ +ol.round { + list-style-type: none; + padding-left: 0; +} + + ol.round li { + margin: 25px 0; + padding-left: 45px; + } + + ol.round li.zero { + background: url("../Images/orderedList0.png") no-repeat; + } + + ol.round li.one { + background: url("../Images/orderedList1.png") no-repeat; + } + + ol.round li.two { + background: url("../Images/orderedList2.png") no-repeat; + } + + ol.round li.three { + background: url("../Images/orderedList3.png") no-repeat; + } + + ol.round li.four { + background: url("../Images/orderedList4.png") no-repeat; + } + + ol.round li.five { + background: url("../Images/orderedList5.png") no-repeat; + } + + ol.round li.six { + background: url("../Images/orderedList6.png") no-repeat; + } + + ol.round li.seven { + background: url("../Images/orderedList7.png") no-repeat; + } + + ol.round li.eight { + background: url("../Images/orderedList8.png") no-repeat; + } + + ol.round li.nine { + background: url("../Images/orderedList9.png") no-repeat; + } + +/* content */ +article { + float: left; + width: 70%; +} + +aside { + float: right; + width: 25%; +} + + aside ul { + list-style: none; + padding: 0; + } + + aside ul li { + background: url("../Images/bullet.png") no-repeat 0 50%; + padding: 2px 0 2px 20px; + } + +.label { + font-weight: 700; +} + +/* login page */ +#loginForm { + border-right: solid 2px #c8c8c8; + float: left; + width: 45%; +} + + #loginForm .validation-error { + display: block; + margin-left: 15px; + } + +#socialLoginForm { + margin-left: 40px; + float: left; + width: 50%; +} + +/* contact */ +.contact h3 { + font-size: 1.2em; +} + +.contact p { + margin: 5px 0 0 10px; +} + +.contact iframe { + border: 1px solid #333; + margin: 5px 0 0 10px; +} + +/* forms */ +fieldset { + border: none; + margin: 0; + padding: 0; +} + + fieldset legend { + display: none; + } + + fieldset ol { + padding: 0; + list-style: none; + } + + fieldset ol li { + padding-bottom: 5px; + } + + fieldset label { + display: block; + font-size: 1.2em; + font-weight: 600; + } + + fieldset label.checkbox { + display: inline; + } + + fieldset input[type="text"], + fieldset input[type="password"] { + border: 1px solid #e2e2e2; + color: #333; + font-size: 1.2em; + margin: 5px 0 6px 0; + padding: 5px; + width: 300px; + } + + fieldset input[type="text"]:focus, + fieldset input[type="password"]:focus { + border: 1px solid #7ac0da; + } + + fieldset input[type="submit"] { + background-color: #d3dce0; + border: 1px solid #787878; + cursor: pointer; + font-size: 1.2em; + font-weight: 600; + padding: 7px; + } + +/* ajax login/registration dialog */ +.ui-dialog { + font-family: inherit; + font-size: 1.0em; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; + border: 0 none; +} + + .ui-dialog input { + font-family: inherit; + font-size: 1.25em; + } + +.ui-dialog-titlebar { + color: inherit; + font-weight: inherit; + border: 0 none; + background: none; + float: right; +} + +.ui-dialog-titlebar-close { + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; +} + +.ui-widget-header { + border: 0 none; + background: none; +} + +.modal-popup { + +} + + .modal-popup input[type="text"], + .modal-popup input[type="password"] { + width: 90%; + } + +/* info and errors */ +.message-info { + border: 1px solid; + clear: both; + padding: 10px 20px; +} + +.message-error { + clear: both; + color: #e80c4d; + font-size: 1.1em; + font-weight: bold; + margin: 20px 0 10px 0; +} + +.message-success { + color: #7ac0da; + font-size: 1.3em; + font-weight: bold; + margin: 20px 0 10px 0; +} + +.error { + color: #e80c4d; +} + +/* styles for validation helpers */ +.field-validation-error { + color: #e80c4d; + font-weight: bold; +} + +.field-validation-valid { + display: none; +} + +input[type="text"].input-validation-error, +input[type="password"].input-validation-error { + border: 1px solid #e80c4d; +} + +.validation-summary-errors { + color: #e80c4d; + font-weight: bold; + font-size: 1.1em; +} + +.validation-summary-valid { + display: none; +} + +ul#social li { + display: inline; + list-style: none; +} + + ul#social li a { + color: #999; + text-decoration: none; + } + + a.facebook, a.twitter { + display: block; + float: left; + height: 24px; + padding-left: 17px; + text-indent: -9999px; + width: 16px; + } + + a.facebook { + background: url("../Images/facebook.png") no-repeat; + } + + a.twitter { + background: url("../Images/twitter.png") no-repeat; + } + +/* tables +----------------------------------------------------------*/ +table { + border-collapse: collapse; + border-spacing: 0; + margin-top: 0.75em; + border: 0 none; +} + +th { + font-size: 1.2em; + text-align: left; + border: none 0px; + padding-left: 0; +} + + th a { + display: block; + position: relative; + + } + + th a:link, th a:visited, th a:active, th a:hover { + color: #333; + font-weight: 600; + text-decoration: none; + padding: 0; + } + + th a:hover { + color: #000; + } + + th.asc a, th.desc a { + margin-right: .75em; + } + + th.asc a:after, th.desc a:after { + display: block; + position: absolute; + right: 0em; + top: 0; + font-size: 0.75em; + } + + th.asc a:after { + content: '▲'; + } + + th.desc a:after { + content: '▼'; + } + +td { + padding: 0.25em 2em 0.25em 0em; + border: 0 none; +} + +tr.pager td { + padding: 0 0.25em 0 0; +} + + +/******************** +* Mobile Styles * +********************/ +@media only screen and (max-width: 850px) { + + /* header + ----------------------------------------------------------*/ + header .float-left, + header .float-right { + float: none; + } + + /* logo */ + header .site-title { + margin: 10px; + text-align: center; + } + + /* login */ + #login { + font-size: .85em; + margin: 0 0 12px; + text-align: center; + } + + #login ul { + margin: 5px 0; + padding: 0; + } + + #login li { + display: inline; + list-style: none; + margin: 0; + padding: 0; + } + + #login a { + background: none; + color: #999; + font-weight: 600; + margin: 2px; + padding: 0; + } + + #login a:hover { + color: #333; + } + + /* menu */ + nav { + margin-bottom: 5px; + } + + ul#menu { + margin: 0; + padding: 0; + text-align: center; + } + + ul#menu li { + margin: 0; + padding: 0; + } + + + /* main layout + ----------------------------------------------------------*/ + .main-content, + .featured + .main-content { + background-position: 10px 0; + } + + .content-wrapper { + padding-right: 10px; + padding-left: 10px; + } + + .featured .content-wrapper { + padding: 10px; + } + + /* page content */ + article, aside { + float: none; + width: 100%; + } + + /* ordered list */ + ol.round { + list-style-type: none; + padding-left: 0; + } + + ol.round li { + padding-left: 10px; + margin: 25px 0; + } + + ol.round li.zero, + ol.round li.one, + ol.round li.two, + ol.round li.three, + ol.round li.four, + ol.round li.five, + ol.round li.six, + ol.round li.seven, + ol.round li.eight, + ol.round li.nine { + background: none; + } + + /* features */ + section.feature { + float: none; + padding: 10px; + width: auto; + } + + section.feature img { + color: #999; + content: attr(alt); + font-size: 1.5em; + font-weight: 600; + } + + /* forms */ + fieldset input[type="text"], + fieldset input[type="password"] { + width: 90%; + } + + /* login page */ + #loginForm { + border-right: none; + float: none; + width: auto; + } + + #loginForm .validation-error { + display: block; + margin-left: 15px; + } + + #socialLoginForm { + margin-left: 0; + float: none; + width: auto; + } + + /* footer + ----------------------------------------------------------*/ + footer .float-left, + footer .float-right { + float: none; + } + + footer { + text-align: center; + height: auto; + padding: 10px 0; + } + + footer p { + margin: 0; + } + + ul#social { + padding: 0; + margin: 0; + } + + a.facebook, a.twitter { + background: none; + display: inline; + float: none; + padding-left: 0; + text-indent: 0; + } +} diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/animated-overlay.gif b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/animated-overlay.gif new file mode 100644 index 0000000000000000000000000000000000000000..d441f75ebfbdf26a265dfccd670120d25c0a341c GIT binary patch literal 1738 zcmZ|OX;ji_6b5ixNYt8>l?gOuO)6lU%W(mxn(`>1S(XO;u`D+P%xqBvMr|w-Vyr1s z7R|Cn0b8|Hu<=Zmv1mFqh9Fj!NuZfKB2MP$e75`XJ@>=!y!Ux9xR3x;EW!q1^V>X| znVFuRUN`NqJ2)ybXh%e__h!!pv(M|S3+?9F%(K}zyE40MGyhWF5-IDgL&=%2-9`Nk z!1@8uk4t%_{(K~>N;sK&dzJbwJ=$kYTlL=$%#0Pfh>U{%i@~wWbvYsD_K-D`&+u1( z#Ma`>%q<^UhzGvi(hyE`zCD{-=2|zL5>wnB=DE!U?(CZG%q4@lDnCq_%&3DCla#(X zmBhDD+RN$aMWWHm?ig*>1Onn6~r?Ma~N2JKAxN>H%UtRyRqS)6Um!-Tz%-r=& zQmTb^JFIe3W^-kAm`}`2P|niMh>RYyd)S^f(dbrx965?rzbhP|XeP}o&&DSZ4|oYQ z)I{f!SfycYw?3=9W;o-B%U5xs(pP267X~9-7L|4WzaYexC0GtG8wWygm63rF{llCEraxzkc=IxvFQ-y37=_;e5 zJLq^gsSO0Ayz?a>E_?{dmUc+t#qv$)XN8$<<}rQ#)lsiw+pmL&J>~+hgpo>i$m+;l zZIa_ZRIfSeT$~v5d`EBV&*k`apPgjv&B|+d`Q!nyu{L4rs%ZfoF0*Kq8I%ByOcFpL zK=>wzofZo<+0GZLCnWM3oQ^pb(gRSf02;~cEn@LJ>~XB9IkEX{$N#Z`m%>S!U{uPx zloI%bLdo$Adxlh(Uv^yX7s5G&C zLwNRG>~T?G{kzupp8EcyLGPoPf)@&9Wqfw_l&uU-6cexk%5;uQg%wb=0k_733{i#& z1a2p)gV3S2+QG1-K9tZ}E~I<(P0r2aFFY-c{o?TUOz3Xjod#TLE2A_c?*T7t z=1>~%YW450{Qqno4t`}gvLnuMrcu8+#xEBoY%2_+Mb#Z6S38+r*M4O`-+!zl(@m`D zQsi|GA2l3gEy}LFe<#Hv8?$_L#u8E|3-bP$*La*E>B{X!Sy4i6?TKam!49aXCAW4S*P_O^H4^*DpiA40o}Uqw~Eo&veh1`|8i zD2$x+>_b^bXE4N;AW=5>iYak2%!JAh0j1*k1{p#iRCjbB7!cSws~U{1IA@acLII$t z$>X#A+^s6iJ5~DFG!xa?>z{=lxtdi1rzbM-(nqAu3D8h-&64xo6|E!p?pK0xT;qoK z`6%+SpBk+~M?nO}>2mTw!A{yZ6O>Z@kwSd4;8aWU5z!P~tQl?u==^+R`{OmOS}oZh zOXQ3{6kuz?Is^n^L7;9ieB9C+8B{>t+pDrlq4xGDDn#T#3T5$l1g`FTQkU;b-981j zNm{zC`$wn7etklM#qHI4=3m5gwa6DNS{?Z!vSObi_od{4eUo=_S2BKNpkSdiqe(k9WtkeM79;2-%CFbb)aB=&H1?i1}uwFzoZQ(38Kn1zBP ORn*B%u*Wk|4g3!*Rv{Mv literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`R^ z$vje}bP0l+XkK DSH>_4 literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-bg_flat_75_ffffff_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..ac8b229af950c29356abf64a6c4aa894575445f0 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsY*{5$B>N1x91EQ4=4yQYz+E8 zPo9&<{J;c_6SHRil>2s{Zw^OT)6@jj2u|u!(plXsM>LJD`vD!n;OXk;vd$@?2>^GI BH@yG= literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..ad3d6346e00f246102f72f2e026ed0491988b394 GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnour0hLi978O6-<~(*I$*%ybaDOn z{W;e!B}_MSUQoPXhYd^Y6RUoS1yepnPx`2Kz)7OXQG!!=-jY=F+d2OOy?#DnJ32>z UEim$g7SJdLPgg&ebxsLQ09~*s;{X5v literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..42ccba269b6e91bef12ad0fa18be651b5ef0ee68 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouqzpV=978O6-=0?FV^9z|eBtf= z|7WztIJ;WT>{+tN>ySr~=F{k$>;_x^_y?afmf9pRKH0)6?eSP?3s5hEr>mdKI;Vst E0O;M1& literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..5a46b47cb16631068aee9e0bd61269fc4e95e5cd GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq|7{B978O6lPf+wIa#m9#>Unb zm^4K~wN3Zq+uP{vDV26o)#~38k_!`W=^oo1w6ixmPC4R1b Tyd6G3lNdZ*{an^LB{Ts5`idse literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..7c9fa6c6edcfcdd3e5b77e6f547b719e6fc66e30 GIT binary patch literal 101 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 literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-icons_2e83ff_256x240.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..45e8928e5284adacea3f9ec07b9b50667d2ac65f GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-icons_454545_256x240.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-icons_454545_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..7ec70d11bfb2f77374dfd00ef61ba0c3647b5a0c GIT binary patch literal 4369 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 k*Kv;w;*%(i9W@fAqs5i2wiq literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-icons_888888_256x240.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/images/ui-icons_888888_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..5ba708c39172a69e069136bd1309c4322c61f571 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery-ui.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery-ui.css new file mode 100644 index 00000000..0d902407 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery-ui.css @@ -0,0 +1,1188 @@ +/*! jQuery UI - v1.10.3 - 2013-05-03 +* http://jqueryui.com +* Includes: jquery.ui.core.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css, jquery.ui.theme.css +* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { + display: none; +} +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; +} +.ui-helper-clearfix:before, +.ui-helper-clearfix:after { + content: ""; + display: table; + border-collapse: collapse; +} +.ui-helper-clearfix:after { + clear: both; +} +.ui-helper-clearfix { + min-height: 0; /* support: IE7 */ +} +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter:Alpha(Opacity=0); +} + +.ui-front { + z-index: 100; +} + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { + cursor: default !important; +} + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.ui-accordion .ui-accordion-header { + display: block; + cursor: pointer; + position: relative; + margin-top: 2px; + padding: .5em .5em .5em .7em; + min-height: 0; /* support: IE7 */ +} +.ui-accordion .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-noicons { + padding-left: .7em; +} +.ui-accordion .ui-accordion-icons .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-header .ui-accordion-header-icon { + position: absolute; + left: .5em; + top: 50%; + margin-top: -8px; +} +.ui-accordion .ui-accordion-content { + padding: 1em 2.2em; + border-top: 0; + overflow: auto; +} + +.ui-autocomplete { + position: absolute; + top: 0; + left: 0; + cursor: default; +} + +.ui-button { + display: inline-block; + position: relative; + padding: 0; + line-height: normal; + margin-right: .1em; + cursor: pointer; + vertical-align: middle; + text-align: center; + overflow: visible; /* removes extra width in IE */ +} +.ui-button, +.ui-button:link, +.ui-button:visited, +.ui-button:hover, +.ui-button:active { + text-decoration: none; +} +/* to make room for the icon, a width needs to be set here */ +.ui-button-icon-only { + width: 2.2em; +} +/* button elements seem to need a little more width */ +button.ui-button-icon-only { + width: 2.4em; +} +.ui-button-icons-only { + width: 3.4em; +} +button.ui-button-icons-only { + width: 3.7em; +} + +/* button text element */ +.ui-button .ui-button-text { + display: block; + line-height: normal; +} +.ui-button-text-only .ui-button-text { + padding: .4em 1em; +} +.ui-button-icon-only .ui-button-text, +.ui-button-icons-only .ui-button-text { + padding: .4em; + text-indent: -9999999px; +} +.ui-button-text-icon-primary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 1em .4em 2.1em; +} +.ui-button-text-icon-secondary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 2.1em .4em 1em; +} +.ui-button-text-icons .ui-button-text { + padding-left: 2.1em; + padding-right: 2.1em; +} +/* no icon support for input elements, provide padding by default */ +input.ui-button { + padding: .4em 1em; +} + +/* button icon element(s) */ +.ui-button-icon-only .ui-icon, +.ui-button-text-icon-primary .ui-icon, +.ui-button-text-icon-secondary .ui-icon, +.ui-button-text-icons .ui-icon, +.ui-button-icons-only .ui-icon { + position: absolute; + top: 50%; + margin-top: -8px; +} +.ui-button-icon-only .ui-icon { + left: 50%; + margin-left: -8px; +} +.ui-button-text-icon-primary .ui-button-icon-primary, +.ui-button-text-icons .ui-button-icon-primary, +.ui-button-icons-only .ui-button-icon-primary { + left: .5em; +} +.ui-button-text-icon-secondary .ui-button-icon-secondary, +.ui-button-text-icons .ui-button-icon-secondary, +.ui-button-icons-only .ui-button-icon-secondary { + right: .5em; +} + +/* button sets */ +.ui-buttonset { + margin-right: 7px; +} +.ui-buttonset .ui-button { + margin-left: 0; + margin-right: -.3em; +} + +/* workarounds */ +/* reset extra padding in Firefox, see h5bp.com/l */ +input.ui-button::-moz-focus-inner, +button.ui-button::-moz-focus-inner { + border: 0; + padding: 0; +} + +.ui-datepicker { + width: 17em; + padding: .2em .2em 0; + display: none; +} +.ui-datepicker .ui-datepicker-header { + position: relative; + padding: .2em 0; +} +.ui-datepicker .ui-datepicker-prev, +.ui-datepicker .ui-datepicker-next { + position: absolute; + top: 2px; + width: 1.8em; + height: 1.8em; +} +.ui-datepicker .ui-datepicker-prev-hover, +.ui-datepicker .ui-datepicker-next-hover { + top: 1px; +} +.ui-datepicker .ui-datepicker-prev { + left: 2px; +} +.ui-datepicker .ui-datepicker-next { + right: 2px; +} +.ui-datepicker .ui-datepicker-prev-hover { + left: 1px; +} +.ui-datepicker .ui-datepicker-next-hover { + right: 1px; +} +.ui-datepicker .ui-datepicker-prev span, +.ui-datepicker .ui-datepicker-next span { + display: block; + position: absolute; + left: 50%; + margin-left: -8px; + top: 50%; + margin-top: -8px; +} +.ui-datepicker .ui-datepicker-title { + margin: 0 2.3em; + line-height: 1.8em; + text-align: center; +} +.ui-datepicker .ui-datepicker-title select { + font-size: 1em; + margin: 1px 0; +} +.ui-datepicker select.ui-datepicker-month-year { + width: 100%; +} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { + width: 49%; +} +.ui-datepicker table { + width: 100%; + font-size: .9em; + border-collapse: collapse; + margin: 0 0 .4em; +} +.ui-datepicker th { + padding: .7em .3em; + text-align: center; + font-weight: bold; + border: 0; +} +.ui-datepicker td { + border: 0; + padding: 1px; +} +.ui-datepicker td span, +.ui-datepicker td a { + display: block; + padding: .2em; + text-align: right; + text-decoration: none; +} +.ui-datepicker .ui-datepicker-buttonpane { + background-image: none; + margin: .7em 0 0 0; + padding: 0 .2em; + border-left: 0; + border-right: 0; + border-bottom: 0; +} +.ui-datepicker .ui-datepicker-buttonpane button { + float: right; + margin: .5em .2em .4em; + cursor: pointer; + padding: .2em .6em .3em .6em; + width: auto; + overflow: visible; +} +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { + float: left; +} + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { + width: auto; +} +.ui-datepicker-multi .ui-datepicker-group { + float: left; +} +.ui-datepicker-multi .ui-datepicker-group table { + width: 95%; + margin: 0 auto .4em; +} +.ui-datepicker-multi-2 .ui-datepicker-group { + width: 50%; +} +.ui-datepicker-multi-3 .ui-datepicker-group { + width: 33.3%; +} +.ui-datepicker-multi-4 .ui-datepicker-group { + width: 25%; +} +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { + border-left-width: 0; +} +.ui-datepicker-multi .ui-datepicker-buttonpane { + clear: left; +} +.ui-datepicker-row-break { + clear: both; + width: 100%; + font-size: 0; +} + +/* RTL support */ +.ui-datepicker-rtl { + direction: rtl; +} +.ui-datepicker-rtl .ui-datepicker-prev { + right: 2px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next { + left: 2px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-prev:hover { + right: 1px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next:hover { + left: 1px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane { + clear: right; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button { + float: left; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, +.ui-datepicker-rtl .ui-datepicker-group { + float: right; +} +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { + border-right-width: 0; + border-left-width: 1px; +} + +.ui-dialog { + position: absolute; + top: 0; + left: 0; + padding: .2em; + outline: 0; +} +.ui-dialog .ui-dialog-titlebar { + padding: .4em 1em; + position: relative; +} +.ui-dialog .ui-dialog-title { + float: left; + margin: .1em 0; + white-space: nowrap; + width: 90%; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-dialog .ui-dialog-titlebar-close { + position: absolute; + right: .3em; + top: 50%; + width: 21px; + margin: -10px 0 0 0; + padding: 1px; + height: 20px; +} +.ui-dialog .ui-dialog-content { + position: relative; + border: 0; + padding: .5em 1em; + background: none; + overflow: auto; +} +.ui-dialog .ui-dialog-buttonpane { + text-align: left; + border-width: 1px 0 0 0; + background-image: none; + margin-top: .5em; + padding: .3em 1em .5em .4em; +} +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { + float: right; +} +.ui-dialog .ui-dialog-buttonpane button { + margin: .5em .4em .5em 0; + cursor: pointer; +} +.ui-dialog .ui-resizable-se { + width: 12px; + height: 12px; + right: -5px; + bottom: -5px; + background-position: 16px 16px; +} +.ui-draggable .ui-dialog-titlebar { + cursor: move; +} + +.ui-menu { + list-style: none; + padding: 2px; + margin: 0; + display: block; + outline: none; +} +.ui-menu .ui-menu { + margin-top: -3px; + position: absolute; +} +.ui-menu .ui-menu-item { + margin: 0; + padding: 0; + width: 100%; + /* support: IE10, see #8844 */ + list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); +} +.ui-menu .ui-menu-divider { + margin: 5px -2px 5px -2px; + height: 0; + font-size: 0; + line-height: 0; + border-width: 1px 0 0 0; +} +.ui-menu .ui-menu-item a { + text-decoration: none; + display: block; + padding: 2px .4em; + line-height: 1.5; + min-height: 0; /* support: IE7 */ + font-weight: normal; +} +.ui-menu .ui-menu-item a.ui-state-focus, +.ui-menu .ui-menu-item a.ui-state-active { + font-weight: normal; + margin: -1px; +} + +.ui-menu .ui-state-disabled { + font-weight: normal; + margin: .4em 0 .2em; + line-height: 1.5; +} +.ui-menu .ui-state-disabled a { + cursor: default; +} + +/* icon support */ +.ui-menu-icons { + position: relative; +} +.ui-menu-icons .ui-menu-item a { + position: relative; + padding-left: 2em; +} + +/* left-aligned */ +.ui-menu .ui-icon { + position: absolute; + top: .2em; + left: .2em; +} + +/* right-aligned */ +.ui-menu .ui-menu-icon { + position: static; + float: right; +} + +.ui-progressbar { + height: 2em; + text-align: left; + overflow: hidden; +} +.ui-progressbar .ui-progressbar-value { + margin: -1px; + height: 100%; +} +.ui-progressbar .ui-progressbar-overlay { + background: url("images/animated-overlay.gif"); + height: 100%; + filter: alpha(opacity=25); + opacity: 0.25; +} +.ui-progressbar-indeterminate .ui-progressbar-value { + background-image: none; +} + +.ui-resizable { + position: relative; +} +.ui-resizable-handle { + position: absolute; + font-size: 0.1px; + display: block; +} +.ui-resizable-disabled .ui-resizable-handle, +.ui-resizable-autohide .ui-resizable-handle { + display: none; +} +.ui-resizable-n { + cursor: n-resize; + height: 7px; + width: 100%; + top: -5px; + left: 0; +} +.ui-resizable-s { + cursor: s-resize; + height: 7px; + width: 100%; + bottom: -5px; + left: 0; +} +.ui-resizable-e { + cursor: e-resize; + width: 7px; + right: -5px; + top: 0; + height: 100%; +} +.ui-resizable-w { + cursor: w-resize; + width: 7px; + left: -5px; + top: 0; + height: 100%; +} +.ui-resizable-se { + cursor: se-resize; + width: 12px; + height: 12px; + right: 1px; + bottom: 1px; +} +.ui-resizable-sw { + cursor: sw-resize; + width: 9px; + height: 9px; + left: -5px; + bottom: -5px; +} +.ui-resizable-nw { + cursor: nw-resize; + width: 9px; + height: 9px; + left: -5px; + top: -5px; +} +.ui-resizable-ne { + cursor: ne-resize; + width: 9px; + height: 9px; + right: -5px; + top: -5px; +} + +.ui-selectable-helper { + position: absolute; + z-index: 100; + border: 1px dotted black; +} + +.ui-slider { + position: relative; + text-align: left; +} +.ui-slider .ui-slider-handle { + position: absolute; + z-index: 2; + width: 1.2em; + height: 1.2em; + cursor: default; +} +.ui-slider .ui-slider-range { + position: absolute; + z-index: 1; + font-size: .7em; + display: block; + border: 0; + background-position: 0 0; +} + +/* For IE8 - See #6727 */ +.ui-slider.ui-state-disabled .ui-slider-handle, +.ui-slider.ui-state-disabled .ui-slider-range { + filter: inherit; +} + +.ui-slider-horizontal { + height: .8em; +} +.ui-slider-horizontal .ui-slider-handle { + top: -.3em; + margin-left: -.6em; +} +.ui-slider-horizontal .ui-slider-range { + top: 0; + height: 100%; +} +.ui-slider-horizontal .ui-slider-range-min { + left: 0; +} +.ui-slider-horizontal .ui-slider-range-max { + right: 0; +} + +.ui-slider-vertical { + width: .8em; + height: 100px; +} +.ui-slider-vertical .ui-slider-handle { + left: -.3em; + margin-left: 0; + margin-bottom: -.6em; +} +.ui-slider-vertical .ui-slider-range { + left: 0; + width: 100%; +} +.ui-slider-vertical .ui-slider-range-min { + bottom: 0; +} +.ui-slider-vertical .ui-slider-range-max { + top: 0; +} + +.ui-spinner { + position: relative; + display: inline-block; + overflow: hidden; + padding: 0; + vertical-align: middle; +} +.ui-spinner-input { + border: none; + background: none; + color: inherit; + padding: 0; + margin: .2em 0; + vertical-align: middle; + margin-left: .4em; + margin-right: 22px; +} +.ui-spinner-button { + width: 16px; + height: 50%; + font-size: .5em; + padding: 0; + margin: 0; + text-align: center; + position: absolute; + cursor: default; + display: block; + overflow: hidden; + right: 0; +} +/* more specificity required here to overide default borders */ +.ui-spinner a.ui-spinner-button { + border-top: none; + border-bottom: none; + border-right: none; +} +/* vertical centre icon */ +.ui-spinner .ui-icon { + position: absolute; + margin-top: -8px; + top: 50%; + left: 0; +} +.ui-spinner-up { + top: 0; +} +.ui-spinner-down { + bottom: 0; +} + +/* TR overrides */ +.ui-spinner .ui-icon-triangle-1-s { + /* need to fix icons sprite */ + background-position: -65px -16px; +} + +.ui-tabs { + position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ + padding: .2em; +} +.ui-tabs .ui-tabs-nav { + margin: 0; + padding: .2em .2em 0; +} +.ui-tabs .ui-tabs-nav li { + list-style: none; + float: left; + position: relative; + top: 0; + margin: 1px .2em 0 0; + border-bottom-width: 0; + padding: 0; + white-space: nowrap; +} +.ui-tabs .ui-tabs-nav li a { + float: left; + padding: .5em 1em; + text-decoration: none; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active { + margin-bottom: -1px; + padding-bottom: 1px; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active a, +.ui-tabs .ui-tabs-nav li.ui-state-disabled a, +.ui-tabs .ui-tabs-nav li.ui-tabs-loading a { + cursor: text; +} +.ui-tabs .ui-tabs-nav li a, /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { + cursor: pointer; +} +.ui-tabs .ui-tabs-panel { + display: block; + border-width: 0; + padding: 1em 1.4em; + background: none; +} + +.ui-tooltip { + padding: 8px; + position: absolute; + z-index: 9999; + max-width: 300px; + -webkit-box-shadow: 0 0 5px #aaa; + box-shadow: 0 0 5px #aaa; +} +body .ui-tooltip { + border-width: 2px; +} + +/* Component containers +----------------------------------*/ +.ui-widget { + font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; + font-size: 1.1em/*{fsDefault}*/; +} +.ui-widget .ui-widget { + font-size: 1em; +} +.ui-widget input, +.ui-widget select, +.ui-widget textarea, +.ui-widget button { + font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; + font-size: 1em; +} +.ui-widget-content { + border: 1px solid #aaaaaa/*{borderColorContent}*/; + background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; + color: #222222/*{fcContent}*/; +} +.ui-widget-content a { + color: #222222/*{fcContent}*/; +} +.ui-widget-header { + border: 1px solid #aaaaaa/*{borderColorHeader}*/; + background: #cccccc/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; + color: #222222/*{fcHeader}*/; + font-weight: bold; +} +.ui-widget-header a { + color: #222222/*{fcHeader}*/; +} + +/* Interaction states +----------------------------------*/ +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default { + border: 1px solid #d3d3d3/*{borderColorDefault}*/; + background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; + font-weight: normal/*{fwDefault}*/; + color: #555555/*{fcDefault}*/; +} +.ui-state-default a, +.ui-state-default a:link, +.ui-state-default a:visited { + color: #555555/*{fcDefault}*/; + text-decoration: none; +} +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-widget-header .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus { + border: 1px solid #999999/*{borderColorHover}*/; + background: #dadada/*{bgColorHover}*/ url(images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/; + font-weight: normal/*{fwDefault}*/; + color: #212121/*{fcHover}*/; +} +.ui-state-hover a, +.ui-state-hover a:hover, +.ui-state-hover a:link, +.ui-state-hover a:visited { + color: #212121/*{fcHover}*/; + text-decoration: none; +} +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active { + border: 1px solid #aaaaaa/*{borderColorActive}*/; + background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; + font-weight: normal/*{fwDefault}*/; + color: #212121/*{fcActive}*/; +} +.ui-state-active a, +.ui-state-active a:link, +.ui-state-active a:visited { + color: #212121/*{fcActive}*/; + text-decoration: none; +} + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + border: 1px solid #fcefa1/*{borderColorHighlight}*/; + background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; + color: #363636/*{fcHighlight}*/; +} +.ui-state-highlight a, +.ui-widget-content .ui-state-highlight a, +.ui-widget-header .ui-state-highlight a { + color: #363636/*{fcHighlight}*/; +} +.ui-state-error, +.ui-widget-content .ui-state-error, +.ui-widget-header .ui-state-error { + border: 1px solid #cd0a0a/*{borderColorError}*/; + background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; + color: #cd0a0a/*{fcError}*/; +} +.ui-state-error a, +.ui-widget-content .ui-state-error a, +.ui-widget-header .ui-state-error a { + color: #cd0a0a/*{fcError}*/; +} +.ui-state-error-text, +.ui-widget-content .ui-state-error-text, +.ui-widget-header .ui-state-error-text { + color: #cd0a0a/*{fcError}*/; +} +.ui-priority-primary, +.ui-widget-content .ui-priority-primary, +.ui-widget-header .ui-priority-primary { + font-weight: bold; +} +.ui-priority-secondary, +.ui-widget-content .ui-priority-secondary, +.ui-widget-header .ui-priority-secondary { + opacity: .7; + filter:Alpha(Opacity=70); + font-weight: normal; +} +.ui-state-disabled, +.ui-widget-content .ui-state-disabled, +.ui-widget-header .ui-state-disabled { + opacity: .35; + filter:Alpha(Opacity=35); + background-image: none; +} +.ui-state-disabled .ui-icon { + filter:Alpha(Opacity=35); /* For IE8 - See #6059 */ +} + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + width: 16px; + height: 16px; +} +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; +} +.ui-widget-header .ui-icon { + background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHeader}*/; +} +.ui-state-default .ui-icon { + background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; +} +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon { + background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHover}*/; +} +.ui-state-active .ui-icon { + background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/; +} +.ui-state-highlight .ui-icon { + background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; +} +.ui-state-error .ui-icon, +.ui-state-error-text .ui-icon { + background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; +} + +/* positioning */ +.ui-icon-blank { background-position: 16px 16px; } +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-on { background-position: -96px -144px; } +.ui-icon-radio-off { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 4px/*{cornerRadius}*/; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 4px/*{cornerRadius}*/; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 4px/*{cornerRadius}*/; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 4px/*{cornerRadius}*/; +} + +/* Overlays */ +.ui-widget-overlay { + background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; + opacity: .3/*{opacityOverlay}*/; + filter: Alpha(Opacity=30)/*{opacityFilterOverlay}*/; +} +.ui-widget-shadow { + margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; + padding: 8px/*{thicknessShadow}*/; + background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; + opacity: .3/*{opacityShadow}*/; + filter: Alpha(Opacity=30)/*{opacityFilterShadow}*/; + border-radius: 8px/*{cornerRadiusShadow}*/; +} diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.accordion.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.accordion.css new file mode 100644 index 00000000..d36f9109 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.accordion.css @@ -0,0 +1,38 @@ +/*! + * jQuery UI Accordion 1.10.3 + * http://jqueryui.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Accordion#theming + */ +.ui-accordion .ui-accordion-header { + display: block; + cursor: pointer; + position: relative; + margin-top: 2px; + padding: .5em .5em .5em .7em; + min-height: 0; /* support: IE7 */ +} +.ui-accordion .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-noicons { + padding-left: .7em; +} +.ui-accordion .ui-accordion-icons .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-header .ui-accordion-header-icon { + position: absolute; + left: .5em; + top: 50%; + margin-top: -8px; +} +.ui-accordion .ui-accordion-content { + padding: 1em 2.2em; + border-top: 0; + overflow: auto; +} diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.all.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.all.css new file mode 100644 index 00000000..a0df1693 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.all.css @@ -0,0 +1,12 @@ +/*! + * jQuery UI CSS Framework 1.10.3 + * http://jqueryui.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming + */ +@import "jquery.ui.base.css"; +@import "jquery.ui.theme.css"; diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.autocomplete.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.autocomplete.css new file mode 100644 index 00000000..5e2c7503 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.autocomplete.css @@ -0,0 +1,16 @@ +/*! + * jQuery UI Autocomplete 1.10.3 + * http://jqueryui.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete#theming + */ +.ui-autocomplete { + position: absolute; + top: 0; + left: 0; + cursor: default; +} diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.base.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.base.css new file mode 100644 index 00000000..84c95076 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.base.css @@ -0,0 +1,25 @@ +/*! + * jQuery UI CSS Framework 1.10.3 + * http://jqueryui.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming + */ +@import url("jquery.ui.core.css"); + +@import url("jquery.ui.accordion.css"); +@import url("jquery.ui.autocomplete.css"); +@import url("jquery.ui.button.css"); +@import url("jquery.ui.datepicker.css"); +@import url("jquery.ui.dialog.css"); +@import url("jquery.ui.menu.css"); +@import url("jquery.ui.progressbar.css"); +@import url("jquery.ui.resizable.css"); +@import url("jquery.ui.selectable.css"); +@import url("jquery.ui.slider.css"); +@import url("jquery.ui.spinner.css"); +@import url("jquery.ui.tabs.css"); +@import url("jquery.ui.tooltip.css"); diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.button.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.button.css new file mode 100644 index 00000000..52d6c13d --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.button.css @@ -0,0 +1,114 @@ +/*! + * jQuery UI Button 1.10.3 + * http://jqueryui.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button#theming + */ +.ui-button { + display: inline-block; + position: relative; + padding: 0; + line-height: normal; + margin-right: .1em; + cursor: pointer; + vertical-align: middle; + text-align: center; + overflow: visible; /* removes extra width in IE */ +} +.ui-button, +.ui-button:link, +.ui-button:visited, +.ui-button:hover, +.ui-button:active { + text-decoration: none; +} +/* to make room for the icon, a width needs to be set here */ +.ui-button-icon-only { + width: 2.2em; +} +/* button elements seem to need a little more width */ +button.ui-button-icon-only { + width: 2.4em; +} +.ui-button-icons-only { + width: 3.4em; +} +button.ui-button-icons-only { + width: 3.7em; +} + +/* button text element */ +.ui-button .ui-button-text { + display: block; + line-height: normal; +} +.ui-button-text-only .ui-button-text { + padding: .4em 1em; +} +.ui-button-icon-only .ui-button-text, +.ui-button-icons-only .ui-button-text { + padding: .4em; + text-indent: -9999999px; +} +.ui-button-text-icon-primary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 1em .4em 2.1em; +} +.ui-button-text-icon-secondary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 2.1em .4em 1em; +} +.ui-button-text-icons .ui-button-text { + padding-left: 2.1em; + padding-right: 2.1em; +} +/* no icon support for input elements, provide padding by default */ +input.ui-button { + padding: .4em 1em; +} + +/* button icon element(s) */ +.ui-button-icon-only .ui-icon, +.ui-button-text-icon-primary .ui-icon, +.ui-button-text-icon-secondary .ui-icon, +.ui-button-text-icons .ui-icon, +.ui-button-icons-only .ui-icon { + position: absolute; + top: 50%; + margin-top: -8px; +} +.ui-button-icon-only .ui-icon { + left: 50%; + margin-left: -8px; +} +.ui-button-text-icon-primary .ui-button-icon-primary, +.ui-button-text-icons .ui-button-icon-primary, +.ui-button-icons-only .ui-button-icon-primary { + left: .5em; +} +.ui-button-text-icon-secondary .ui-button-icon-secondary, +.ui-button-text-icons .ui-button-icon-secondary, +.ui-button-icons-only .ui-button-icon-secondary { + right: .5em; +} + +/* button sets */ +.ui-buttonset { + margin-right: 7px; +} +.ui-buttonset .ui-button { + margin-left: 0; + margin-right: -.3em; +} + +/* workarounds */ +/* reset extra padding in Firefox, see h5bp.com/l */ +input.ui-button::-moz-focus-inner, +button.ui-button::-moz-focus-inner { + border: 0; + padding: 0; +} diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.core.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.core.css new file mode 100644 index 00000000..04d60522 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.core.css @@ -0,0 +1,93 @@ +/*! + * jQuery UI CSS Framework 1.10.3 + * http://jqueryui.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { + display: none; +} +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; +} +.ui-helper-clearfix:before, +.ui-helper-clearfix:after { + content: ""; + display: table; + border-collapse: collapse; +} +.ui-helper-clearfix:after { + clear: both; +} +.ui-helper-clearfix { + min-height: 0; /* support: IE7 */ +} +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter:Alpha(Opacity=0); +} + +.ui-front { + z-index: 100; +} + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { + cursor: default !important; +} + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.datepicker.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.datepicker.css new file mode 100644 index 00000000..58bc5d6c --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.datepicker.css @@ -0,0 +1,178 @@ +/*! + * jQuery UI Datepicker 1.10.3 + * http://jqueryui.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Datepicker#theming + */ +.ui-datepicker { + width: 17em; + padding: .2em .2em 0; + display: none; +} +.ui-datepicker .ui-datepicker-header { + position: relative; + padding: .2em 0; +} +.ui-datepicker .ui-datepicker-prev, +.ui-datepicker .ui-datepicker-next { + position: absolute; + top: 2px; + width: 1.8em; + height: 1.8em; +} +.ui-datepicker .ui-datepicker-prev-hover, +.ui-datepicker .ui-datepicker-next-hover { + top: 1px; +} +.ui-datepicker .ui-datepicker-prev { + left: 2px; +} +.ui-datepicker .ui-datepicker-next { + right: 2px; +} +.ui-datepicker .ui-datepicker-prev-hover { + left: 1px; +} +.ui-datepicker .ui-datepicker-next-hover { + right: 1px; +} +.ui-datepicker .ui-datepicker-prev span, +.ui-datepicker .ui-datepicker-next span { + display: block; + position: absolute; + left: 50%; + margin-left: -8px; + top: 50%; + margin-top: -8px; +} +.ui-datepicker .ui-datepicker-title { + margin: 0 2.3em; + line-height: 1.8em; + text-align: center; +} +.ui-datepicker .ui-datepicker-title select { + font-size: 1em; + margin: 1px 0; +} +.ui-datepicker select.ui-datepicker-month-year { + width: 100%; +} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { + width: 49%; +} +.ui-datepicker table { + width: 100%; + font-size: .9em; + border-collapse: collapse; + margin: 0 0 .4em; +} +.ui-datepicker th { + padding: .7em .3em; + text-align: center; + font-weight: bold; + border: 0; +} +.ui-datepicker td { + border: 0; + padding: 1px; +} +.ui-datepicker td span, +.ui-datepicker td a { + display: block; + padding: .2em; + text-align: right; + text-decoration: none; +} +.ui-datepicker .ui-datepicker-buttonpane { + background-image: none; + margin: .7em 0 0 0; + padding: 0 .2em; + border-left: 0; + border-right: 0; + border-bottom: 0; +} +.ui-datepicker .ui-datepicker-buttonpane button { + float: right; + margin: .5em .2em .4em; + cursor: pointer; + padding: .2em .6em .3em .6em; + width: auto; + overflow: visible; +} +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { + float: left; +} + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { + width: auto; +} +.ui-datepicker-multi .ui-datepicker-group { + float: left; +} +.ui-datepicker-multi .ui-datepicker-group table { + width: 95%; + margin: 0 auto .4em; +} +.ui-datepicker-multi-2 .ui-datepicker-group { + width: 50%; +} +.ui-datepicker-multi-3 .ui-datepicker-group { + width: 33.3%; +} +.ui-datepicker-multi-4 .ui-datepicker-group { + width: 25%; +} +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { + border-left-width: 0; +} +.ui-datepicker-multi .ui-datepicker-buttonpane { + clear: left; +} +.ui-datepicker-row-break { + clear: both; + width: 100%; + font-size: 0; +} + +/* RTL support */ +.ui-datepicker-rtl { + direction: rtl; +} +.ui-datepicker-rtl .ui-datepicker-prev { + right: 2px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next { + left: 2px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-prev:hover { + right: 1px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next:hover { + left: 1px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane { + clear: right; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button { + float: left; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, +.ui-datepicker-rtl .ui-datepicker-group { + float: right; +} +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { + border-right-width: 0; + border-left-width: 1px; +} diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.dialog.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.dialog.css new file mode 100644 index 00000000..533d606c --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.dialog.css @@ -0,0 +1,69 @@ +/*! + * jQuery UI Dialog 1.10.3 + * http://jqueryui.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog#theming + */ +.ui-dialog { + position: absolute; + top: 0; + left: 0; + padding: .2em; + outline: 0; +} +.ui-dialog .ui-dialog-titlebar { + padding: .4em 1em; + position: relative; +} +.ui-dialog .ui-dialog-title { + float: left; + margin: .1em 0; + white-space: nowrap; + width: 90%; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-dialog .ui-dialog-titlebar-close { + position: absolute; + right: .3em; + top: 50%; + width: 21px; + margin: -10px 0 0 0; + padding: 1px; + height: 20px; +} +.ui-dialog .ui-dialog-content { + position: relative; + border: 0; + padding: .5em 1em; + background: none; + overflow: auto; +} +.ui-dialog .ui-dialog-buttonpane { + text-align: left; + border-width: 1px 0 0 0; + background-image: none; + margin-top: .5em; + padding: .3em 1em .5em .4em; +} +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { + float: right; +} +.ui-dialog .ui-dialog-buttonpane button { + margin: .5em .4em .5em 0; + cursor: pointer; +} +.ui-dialog .ui-resizable-se { + width: 12px; + height: 12px; + right: -5px; + bottom: -5px; + background-position: 16px 16px; +} +.ui-draggable .ui-dialog-titlebar { + cursor: move; +} diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.menu.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.menu.css new file mode 100644 index 00000000..c48ab33f --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.menu.css @@ -0,0 +1,79 @@ +/*! + * jQuery UI Menu 1.10.3 + * http://jqueryui.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Menu#theming + */ +.ui-menu { + list-style: none; + padding: 2px; + margin: 0; + display: block; + outline: none; +} +.ui-menu .ui-menu { + margin-top: -3px; + position: absolute; +} +.ui-menu .ui-menu-item { + margin: 0; + padding: 0; + width: 100%; + /* support: IE10, see #8844 */ + list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); +} +.ui-menu .ui-menu-divider { + margin: 5px -2px 5px -2px; + height: 0; + font-size: 0; + line-height: 0; + border-width: 1px 0 0 0; +} +.ui-menu .ui-menu-item a { + text-decoration: none; + display: block; + padding: 2px .4em; + line-height: 1.5; + min-height: 0; /* support: IE7 */ + font-weight: normal; +} +.ui-menu .ui-menu-item a.ui-state-focus, +.ui-menu .ui-menu-item a.ui-state-active { + font-weight: normal; + margin: -1px; +} + +.ui-menu .ui-state-disabled { + font-weight: normal; + margin: .4em 0 .2em; + line-height: 1.5; +} +.ui-menu .ui-state-disabled a { + cursor: default; +} + +/* icon support */ +.ui-menu-icons { + position: relative; +} +.ui-menu-icons .ui-menu-item a { + position: relative; + padding-left: 2em; +} + +/* left-aligned */ +.ui-menu .ui-icon { + position: absolute; + top: .2em; + left: .2em; +} + +/* right-aligned */ +.ui-menu .ui-menu-icon { + position: static; + float: right; +} diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.progressbar.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.progressbar.css new file mode 100644 index 00000000..958e231c --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.progressbar.css @@ -0,0 +1,28 @@ +/*! + * jQuery UI Progressbar 1.10.3 + * http://jqueryui.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Progressbar#theming + */ +.ui-progressbar { + height: 2em; + text-align: left; + overflow: hidden; +} +.ui-progressbar .ui-progressbar-value { + margin: -1px; + height: 100%; +} +.ui-progressbar .ui-progressbar-overlay { + background: url("images/animated-overlay.gif"); + height: 100%; + filter: alpha(opacity=25); + opacity: 0.25; +} +.ui-progressbar-indeterminate .ui-progressbar-value { + background-image: none; +} diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.resizable.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.resizable.css new file mode 100644 index 00000000..c46e9354 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.resizable.css @@ -0,0 +1,78 @@ +/*! + * jQuery UI Resizable 1.10.3 + * http://jqueryui.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Resizable#theming + */ +.ui-resizable { + position: relative; +} +.ui-resizable-handle { + position: absolute; + font-size: 0.1px; + display: block; +} +.ui-resizable-disabled .ui-resizable-handle, +.ui-resizable-autohide .ui-resizable-handle { + display: none; +} +.ui-resizable-n { + cursor: n-resize; + height: 7px; + width: 100%; + top: -5px; + left: 0; +} +.ui-resizable-s { + cursor: s-resize; + height: 7px; + width: 100%; + bottom: -5px; + left: 0; +} +.ui-resizable-e { + cursor: e-resize; + width: 7px; + right: -5px; + top: 0; + height: 100%; +} +.ui-resizable-w { + cursor: w-resize; + width: 7px; + left: -5px; + top: 0; + height: 100%; +} +.ui-resizable-se { + cursor: se-resize; + width: 12px; + height: 12px; + right: 1px; + bottom: 1px; +} +.ui-resizable-sw { + cursor: sw-resize; + width: 9px; + height: 9px; + left: -5px; + bottom: -5px; +} +.ui-resizable-nw { + cursor: nw-resize; + width: 9px; + height: 9px; + left: -5px; + top: -5px; +} +.ui-resizable-ne { + cursor: ne-resize; + width: 9px; + height: 9px; + right: -5px; + top: -5px; +} diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.selectable.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.selectable.css new file mode 100644 index 00000000..274cd442 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.selectable.css @@ -0,0 +1,15 @@ +/*! + * jQuery UI Selectable 1.10.3 + * http://jqueryui.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Selectable#theming + */ +.ui-selectable-helper { + position: absolute; + z-index: 100; + border: 1px dotted black; +} diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.slider.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.slider.css new file mode 100644 index 00000000..f2d49524 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.slider.css @@ -0,0 +1,73 @@ +/*! + * jQuery UI Slider 1.10.3 + * http://jqueryui.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */ +.ui-slider { + position: relative; + text-align: left; +} +.ui-slider .ui-slider-handle { + position: absolute; + z-index: 2; + width: 1.2em; + height: 1.2em; + cursor: default; +} +.ui-slider .ui-slider-range { + position: absolute; + z-index: 1; + font-size: .7em; + display: block; + border: 0; + background-position: 0 0; +} + +/* For IE8 - See #6727 */ +.ui-slider.ui-state-disabled .ui-slider-handle, +.ui-slider.ui-state-disabled .ui-slider-range { + filter: inherit; +} + +.ui-slider-horizontal { + height: .8em; +} +.ui-slider-horizontal .ui-slider-handle { + top: -.3em; + margin-left: -.6em; +} +.ui-slider-horizontal .ui-slider-range { + top: 0; + height: 100%; +} +.ui-slider-horizontal .ui-slider-range-min { + left: 0; +} +.ui-slider-horizontal .ui-slider-range-max { + right: 0; +} + +.ui-slider-vertical { + width: .8em; + height: 100px; +} +.ui-slider-vertical .ui-slider-handle { + left: -.3em; + margin-left: 0; + margin-bottom: -.6em; +} +.ui-slider-vertical .ui-slider-range { + left: 0; + width: 100%; +} +.ui-slider-vertical .ui-slider-range-min { + bottom: 0; +} +.ui-slider-vertical .ui-slider-range-max { + top: 0; +} diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.spinner.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.spinner.css new file mode 100644 index 00000000..9a92c9f5 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.spinner.css @@ -0,0 +1,65 @@ +/*! + * jQuery UI Spinner 1.10.3 + * http://jqueryui.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Spinner#theming + */ +.ui-spinner { + position: relative; + display: inline-block; + overflow: hidden; + padding: 0; + vertical-align: middle; +} +.ui-spinner-input { + border: none; + background: none; + color: inherit; + padding: 0; + margin: .2em 0; + vertical-align: middle; + margin-left: .4em; + margin-right: 22px; +} +.ui-spinner-button { + width: 16px; + height: 50%; + font-size: .5em; + padding: 0; + margin: 0; + text-align: center; + position: absolute; + cursor: default; + display: block; + overflow: hidden; + right: 0; +} +/* more specificity required here to overide default borders */ +.ui-spinner a.ui-spinner-button { + border-top: none; + border-bottom: none; + border-right: none; +} +/* vertical centre icon */ +.ui-spinner .ui-icon { + position: absolute; + margin-top: -8px; + top: 50%; + left: 0; +} +.ui-spinner-up { + top: 0; +} +.ui-spinner-down { + bottom: 0; +} + +/* TR overrides */ +.ui-spinner .ui-icon-triangle-1-s { + /* need to fix icons sprite */ + background-position: -65px -16px; +} diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.tabs.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.tabs.css new file mode 100644 index 00000000..26f9c27e --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.tabs.css @@ -0,0 +1,52 @@ +/*! + * jQuery UI Tabs 1.10.3 + * http://jqueryui.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Tabs#theming + */ +.ui-tabs { + position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ + padding: .2em; +} +.ui-tabs .ui-tabs-nav { + margin: 0; + padding: .2em .2em 0; +} +.ui-tabs .ui-tabs-nav li { + list-style: none; + float: left; + position: relative; + top: 0; + margin: 1px .2em 0 0; + border-bottom-width: 0; + padding: 0; + white-space: nowrap; +} +.ui-tabs .ui-tabs-nav li a { + float: left; + padding: .5em 1em; + text-decoration: none; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active { + margin-bottom: -1px; + padding-bottom: 1px; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active a, +.ui-tabs .ui-tabs-nav li.ui-state-disabled a, +.ui-tabs .ui-tabs-nav li.ui-tabs-loading a { + cursor: text; +} +.ui-tabs .ui-tabs-nav li a, /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ +.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { + cursor: pointer; +} +.ui-tabs .ui-tabs-panel { + display: block; + border-width: 0; + padding: 1em 1.4em; + background: none; +} diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.theme.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.theme.css new file mode 100644 index 00000000..eef80c88 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.theme.css @@ -0,0 +1,406 @@ +/*! + * jQuery UI CSS Framework 1.10.3 + * http://jqueryui.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/ + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { + font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; + font-size: 1.1em/*{fsDefault}*/; +} +.ui-widget .ui-widget { + font-size: 1em; +} +.ui-widget input, +.ui-widget select, +.ui-widget textarea, +.ui-widget button { + font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; + font-size: 1em; +} +.ui-widget-content { + border: 1px solid #aaaaaa/*{borderColorContent}*/; + background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; + color: #222222/*{fcContent}*/; +} +.ui-widget-content a { + color: #222222/*{fcContent}*/; +} +.ui-widget-header { + border: 1px solid #aaaaaa/*{borderColorHeader}*/; + background: #cccccc/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; + color: #222222/*{fcHeader}*/; + font-weight: bold; +} +.ui-widget-header a { + color: #222222/*{fcHeader}*/; +} + +/* Interaction states +----------------------------------*/ +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default { + border: 1px solid #d3d3d3/*{borderColorDefault}*/; + background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; + font-weight: normal/*{fwDefault}*/; + color: #555555/*{fcDefault}*/; +} +.ui-state-default a, +.ui-state-default a:link, +.ui-state-default a:visited { + color: #555555/*{fcDefault}*/; + text-decoration: none; +} +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-widget-header .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus { + border: 1px solid #999999/*{borderColorHover}*/; + background: #dadada/*{bgColorHover}*/ url(images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/; + font-weight: normal/*{fwDefault}*/; + color: #212121/*{fcHover}*/; +} +.ui-state-hover a, +.ui-state-hover a:hover, +.ui-state-hover a:link, +.ui-state-hover a:visited { + color: #212121/*{fcHover}*/; + text-decoration: none; +} +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active { + border: 1px solid #aaaaaa/*{borderColorActive}*/; + background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; + font-weight: normal/*{fwDefault}*/; + color: #212121/*{fcActive}*/; +} +.ui-state-active a, +.ui-state-active a:link, +.ui-state-active a:visited { + color: #212121/*{fcActive}*/; + text-decoration: none; +} + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + border: 1px solid #fcefa1/*{borderColorHighlight}*/; + background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; + color: #363636/*{fcHighlight}*/; +} +.ui-state-highlight a, +.ui-widget-content .ui-state-highlight a, +.ui-widget-header .ui-state-highlight a { + color: #363636/*{fcHighlight}*/; +} +.ui-state-error, +.ui-widget-content .ui-state-error, +.ui-widget-header .ui-state-error { + border: 1px solid #cd0a0a/*{borderColorError}*/; + background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; + color: #cd0a0a/*{fcError}*/; +} +.ui-state-error a, +.ui-widget-content .ui-state-error a, +.ui-widget-header .ui-state-error a { + color: #cd0a0a/*{fcError}*/; +} +.ui-state-error-text, +.ui-widget-content .ui-state-error-text, +.ui-widget-header .ui-state-error-text { + color: #cd0a0a/*{fcError}*/; +} +.ui-priority-primary, +.ui-widget-content .ui-priority-primary, +.ui-widget-header .ui-priority-primary { + font-weight: bold; +} +.ui-priority-secondary, +.ui-widget-content .ui-priority-secondary, +.ui-widget-header .ui-priority-secondary { + opacity: .7; + filter:Alpha(Opacity=70); + font-weight: normal; +} +.ui-state-disabled, +.ui-widget-content .ui-state-disabled, +.ui-widget-header .ui-state-disabled { + opacity: .35; + filter:Alpha(Opacity=35); + background-image: none; +} +.ui-state-disabled .ui-icon { + filter:Alpha(Opacity=35); /* For IE8 - See #6059 */ +} + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + width: 16px; + height: 16px; +} +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; +} +.ui-widget-header .ui-icon { + background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHeader}*/; +} +.ui-state-default .ui-icon { + background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; +} +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon { + background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHover}*/; +} +.ui-state-active .ui-icon { + background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/; +} +.ui-state-highlight .ui-icon { + background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; +} +.ui-state-error .ui-icon, +.ui-state-error-text .ui-icon { + background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; +} + +/* positioning */ +.ui-icon-blank { background-position: 16px 16px; } +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-on { background-position: -96px -144px; } +.ui-icon-radio-off { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 4px/*{cornerRadius}*/; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 4px/*{cornerRadius}*/; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 4px/*{cornerRadius}*/; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 4px/*{cornerRadius}*/; +} + +/* Overlays */ +.ui-widget-overlay { + background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; + opacity: .3/*{opacityOverlay}*/; + filter: Alpha(Opacity=30)/*{opacityFilterOverlay}*/; +} +.ui-widget-shadow { + margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; + padding: 8px/*{thicknessShadow}*/; + background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; + opacity: .3/*{opacityShadow}*/; + filter: Alpha(Opacity=30)/*{opacityFilterShadow}*/; + border-radius: 8px/*{cornerRadiusShadow}*/; +} diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.tooltip.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.tooltip.css new file mode 100644 index 00000000..d7632a42 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/jquery.ui.tooltip.css @@ -0,0 +1,19 @@ +/*! + * jQuery UI Tooltip 1.10.3 + * http://jqueryui.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ +.ui-tooltip { + padding: 8px; + position: absolute; + z-index: 9999; + max-width: 300px; + -webkit-box-shadow: 0 0 5px #aaa; + box-shadow: 0 0 5px #aaa; +} +body .ui-tooltip { + border-width: 2px; +} diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/animated-overlay.gif b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/animated-overlay.gif new file mode 100644 index 0000000000000000000000000000000000000000..d441f75ebfbdf26a265dfccd670120d25c0a341c GIT binary patch literal 1738 zcmZ|OX;ji_6b5ixNYt8>l?gOuO)6lU%W(mxn(`>1S(XO;u`D+P%xqBvMr|w-Vyr1s z7R|Cn0b8|Hu<=Zmv1mFqh9Fj!NuZfKB2MP$e75`XJ@>=!y!Ux9xR3x;EW!q1^V>X| znVFuRUN`NqJ2)ybXh%e__h!!pv(M|S3+?9F%(K}zyE40MGyhWF5-IDgL&=%2-9`Nk z!1@8uk4t%_{(K~>N;sK&dzJbwJ=$kYTlL=$%#0Pfh>U{%i@~wWbvYsD_K-D`&+u1( z#Ma`>%q<^UhzGvi(hyE`zCD{-=2|zL5>wnB=DE!U?(CZG%q4@lDnCq_%&3DCla#(X zmBhDD+RN$aMWWHm?ig*>1Onn6~r?Ma~N2JKAxN>H%UtRyRqS)6Um!-Tz%-r=& zQmTb^JFIe3W^-kAm`}`2P|niMh>RYyd)S^f(dbrx965?rzbhP|XeP}o&&DSZ4|oYQ z)I{f!SfycYw?3=9W;o-B%U5xs(pP267X~9-7L|4WzaYexC0GtG8wWygm63rF{llCEraxzkc=IxvFQ-y37=_;e5 zJLq^gsSO0Ayz?a>E_?{dmUc+t#qv$)XN8$<<}rQ#)lsiw+pmL&J>~+hgpo>i$m+;l zZIa_ZRIfSeT$~v5d`EBV&*k`apPgjv&B|+d`Q!nyu{L4rs%ZfoF0*Kq8I%ByOcFpL zK=>wzofZo<+0GZLCnWM3oQ^pb(gRSf02;~cEn@LJ>~XB9IkEX{$N#Z`m%>S!U{uPx zloI%bLdo$Adxlh(Uv^yX7s5G&C zLwNRG>~T?G{kzupp8EcyLGPoPf)@&9Wqfw_l&uU-6cexk%5;uQg%wb=0k_733{i#& z1a2p)gV3S2+QG1-K9tZ}E~I<(P0r2aFFY-c{o?TUOz3Xjod#TLE2A_c?*T7t z=1>~%YW450{Qqno4t`}gvLnuMrcu8+#xEBoY%2_+Mb#Z6S38+r*M4O`-+!zl(@m`D zQsi|GA2l3gEy}LFe<#Hv8?$_L#u8E|3-bP$*La*E>B{X!Sy4i6?TKam!49aXCAW4S*P_O^H4^*DpiA40o}Uqw~Eo&veh1`|8i zD2$x+>_b^bXE4N;AW=5>iYak2%!JAh0j1*k1{p#iRCjbB7!cSws~U{1IA@acLII$t z$>X#A+^s6iJ5~DFG!xa?>z{=lxtdi1rzbM-(nqAu3D8h-&64xo6|E!p?pK0xT;qoK z`6%+SpBk+~M?nO}>2mTw!A{yZ6O>Z@kwSd4;8aWU5z!P~tQl?u==^+R`{OmOS}oZh zOXQ3{6kuz?Is^n^L7;9ieB9C+8B{>t+pDrlq4xGDDn#T#3T5$l1g`FTQkU;b-981j zNm{zC`$wn7etklM#qHI4=3m5gwa6DNS{?Z!vSObi_od{4eUo=_S2BKNpkSdiqe(k9WtkeM79;2-%CFbb)aB=&H1?i1}uwFzoZQ(38Kn1zBP ORn*B%u*Wk|4g3!*Rv{Mv literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-bg_flat_0_aaaaaa_40x100.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`R^ z$vje}bP0l+XkK DSH>_4 literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-bg_flat_75_ffffff_40x100.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-bg_flat_75_ffffff_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..ac8b229af950c29356abf64a6c4aa894575445f0 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsY*{5$B>N1x91EQ4=4yQYz+E8 zPo9&<{J;c_6SHRil>2s{Zw^OT)6@jj2u|u!(plXsM>LJD`vD!n;OXk;vd$@?2>^GI BH@yG= literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-bg_glass_55_fbf9ee_1x400.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..ad3d6346e00f246102f72f2e026ed0491988b394 GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnour0hLi978O6-<~(*I$*%ybaDOn z{W;e!B}_MSUQoPXhYd^Y6RUoS1yepnPx`2Kz)7OXQG!!=-jY=F+d2OOy?#DnJ32>z UEim$g7SJdLPgg&ebxsLQ09~*s;{X5v literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-bg_glass_65_ffffff_1x400.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..42ccba269b6e91bef12ad0fa18be651b5ef0ee68 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouqzpV=978O6-=0?FV^9z|eBtf= z|7WztIJ;WT>{+tN>ySr~=F{k$>;_x^_y?afmf9pRKH0)6?eSP?3s5hEr>mdKI;Vst E0O;M1& literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-bg_glass_75_dadada_1x400.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..5a46b47cb16631068aee9e0bd61269fc4e95e5cd GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq|7{B978O6lPf+wIa#m9#>Unb zm^4K~wN3Zq+uP{vDV26o)#~38k_!`W=^oo1w6ixmPC4R1b Tyd6G3lNdZ*{an^LB{Ts5`idse literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..7c9fa6c6edcfcdd3e5b77e6f547b719e6fc66e30 GIT binary patch literal 101 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 literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-icons_2e83ff_256x240.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..45e8928e5284adacea3f9ec07b9b50667d2ac65f GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-icons_454545_256x240.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-icons_454545_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..7ec70d11bfb2f77374dfd00ef61ba0c3647b5a0c GIT binary patch literal 4369 zcmd^?`8yPD_s3^phOrG}UnfiUEn8(9QW1?MNkxXVDEpFin2{xWrLx5kBC;k~GmI3`<(O3xvulR&VAkQJHZBho(m=l0{{SA7UpJl008iB z3RqC-Ajq!3AfU8Dx90^_p3}MK zjJzYC+`T(&egFXQ#9Ek{*oVAaa!zrZtmlRFnwQPRJXH<%pkK2*eP`pT=lwD7ifq+4 zBY_rUTa+U|2#&?i7>PVvD?7R4ZfOLPT{e9G~G!Ls3s8JtQE`jMM9wl2V9&Q+K2DHW0M+uQmEr%nYJ^7cK?uIpU-)=wn71ZZ-=@ar0;3^AY5+TI{ z2b(e%t{2PZ^HKF*vu@+Xr&BAc@2BC4_vCgw zw#i=)ea5Vo$glEEVBBg_VPBj!)OO>)f@}#dg6ULOeC>LBHz<;*5Y;YfE0lNxg{N+4 z@lO~ozxpF69qV@VOGnc248Iuag4C1T)P^(hWkpP!{h!JekX}m^Q#b2B0{OYr9M*o< z>EL{WQt@Z+Ea-hxX0}nTSZxnpi^#Kn8Ox8FgIS|hc}KJQ4tm*HO16ui{(O9}1YN)G zjiQt6fGq`Cj+^`zUf?8hk^(T{{cOQGWFP98am}is28A!5%{R#ENv8fCN!j69lMEK(2z?|BY=Je$XD9mB-Kkem*(d-j^9j$2#6r$Dz?s)-TCDCGCs8>6Pv zj{Y+YIeFA@qY22V$)awy@q!9A4rgk5b9TcC;s9Ig^G|6nDP+5=Fzg&?(L=vcCbGd> zfSu~@6!94td+o#d@sid!EIX$rx7*cawe6`dScJ z+$HssdOjE)O#Ybs56vm-FQ$7yuJJD^Zqk%hMaIgAJ<2yb_MFQte_i;62ScT$pjifY zyR_E=rQ+>H)pmlr-Udzg*-!|ssw(D7wJvC+Sf8bb9;;q8#z?0p!!bsd{wy|5pBaMH zE-Ve>i#LLjHRaMLtp%9&(HCng7Sw96jVv!#0k%?F^K7&=T)mnYn)D9(i;4x5^NJTJ zwq~pv;kH@#ejTd*48~(J(r6j34|m`h9fEDj0im)~+%I5XphWymhT;_Zty|Q&zjPg# z-ufAHZ1M*Gccw?Kf|8Pnhtb0`!{N`Bqsa37J+>wC$!e00k+2 zEgzz;rbcWoUB%Jvp8W1}$XD%e3>4y;;OZ1ccT-O#uW6Ys@C}Pa`nZrNKzR(24e%3) z@QI4SE&E!lW`5y14QhbepBG%_XBV-O(%5tj)@9#|;sC-MNev!zGDHk}JdpGC`iJF#8=8-P$Xoku_=Dw%Cv3{U7L>gfRQ?<$ zt`cZ*MP5GQmbmx#!++P@u>0MewRO9GFGS{b^m_fJ-N0?j@EqoFf>$khj+E|@7r3We z&^tR^YZrxKe*d22agXqCO0l44&kqCv{u)T|(lv`~PK@DvE{QI_T zlCH5z*gR!>LO)k67{^R+vWx24U2^2ODXpwT;6y+6+$5m)_*w4WY&#do9dCeE)>p+Y zkdhq($DhmMiaYXey!_kiL26uz($aJ!QT{B^Wu}U$^9e#5)=c+XF9@Ill?ZmMlNgHi zz*9!vDc&uxOo;ZVxb`Q!Sk0*gnfxWzmbZh4(=%CD%qP?0=);n$&zaW_$UKV98axdc zN#AyZ{P)wj?V{P}vM)YY!>6@}^>U+iv$`9>nMTCPjN>z%yF&3yf%>+T@0vh4lC8Xa z6zeo?%=o3}M8{aebLHcO{^1Ar8qiM=Gquf?Jo)q5`-+?sUpg?QXyEUpWSm+n$K-Uy zqkIwHLquru~o(OF)hhz$Y*|X>ZIbswnxRvr~2=rdO zGVuD|xRlpAZE<0!X1F(%Anpl^@V^D3vbM}qxe|NI;TTiZy7(IM;R69RkA>a&6gwYE z2sREzQ_LHmWqB+ogMk(fMaSFeoDq-!HkFB_nXt5+2ncFuk9BQL1I&oB1zZi)YW{6_ z&-Ip1l*OVRA##1ILQS;5R{-K^0wGTiJbVSi@LA^$D$;@J>^G{6@&+%4{b3(sC~LEH ziTv(0b#zxt?YJ0r_~pUZM~mQ(??(n#>&tD%+@nq=Abj5*8R!~Ul1`G~=qFJ4fl|m8 zZDCYgtr`4LcOpgiJYX9qRY5;DcWti~PmS$VB$E-Zt^f4)vLDOe_3XTq5^ylWJ9PKm z!V-8sAOJXnUfuFNIf0R9tK-pNs2hO04zr620}5B(Ok>yB)Of-3sP59qfQNbmA4{w! z2@cB;GbR(~szVrbO%(w=5S!X`o@o@x++wbN_tMPT0Vc)*I;Fgsbf^*g02Di?H zTApwKq3+YwfNsqd3iP%{hyK1iyuVZc@*0tO_3+N0#GFsz>8MjeJ2UJ%L!%hiGYYAt zhH`E+ywA*u{(eJ=ia3h*%k?779rk-K<0VZAPkl;TFUbmei|$fqWO8!_zIvqt$ly$V zrlH46nnpX~X5Yk0iBJl;=WuA4>~X4-f&K0yWf42h&0b30t@NYX$7egQ1Fp!abui-D z6cWCWV&|R1CY@G8(qOmWjWeX3eX7UggZPGimA}soOuQdXe4uZ#2>5zN>qlI09xk}l zE=tNpX1m6*nFr2EQ3xs79!^sCldDJYE$m(qYv3q7>}1R7?iZW7>$~*%zKaC|=$N?M zE$>#+%T&MZC`dW1wUl6Z)JgxkeN920S>e@EK`q~>k| zuYcsgA>F%!@rFciD(>Iwzn8KT;2tb77bUPCmioh+rZBfIiM6f_P34cQ__o1GWqQp3 zVL~~pE5?qODf%iiQQ3f42YF@09tQ*$4v_EKUx;t1KCPCBtgqg@+Tn; zO)a0uky_%jm+WjNB?=~VyH>V#L!*=l*@OSMSVyt_UEH&NA=?V2stHPyKkVN!&jg<#cjros){#ji)dK%)We0 zL_478=HZ8-@xnwsKrWs8)x`MB;(Y`Cmu2c-&SH(vN-F(*e`l?c%+l$|y_AJJhcDGn zwLvN+bu;_sX|1AiePhx@u&%P$hf*xE+O=~D?_(_KGWQ!158YL-y9$*6mmPo;Rp*Dl5lm-mVM2i`h-M@nxv z590_tvMwPD_{l=b$iOm|+|S{D9&P%zeT$GgX6Akl-tfUF>tL@Ld!B&{pN39tH>3V> zqksMAYul+jb7UiouWVGPNsxX7Ueba+9|~dz?d*QM$ng0DZfO0`7fAy?2yMm|cnRzU zhZ&IcwgjH9cuU!w+VStYa{p*)4IgBf|E8)sqMYtB2KH_}SfsFq(c9i(Q6S3UBo%DI k*Kv;w;*%(i9W@fAqs5i2wiq literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-icons_888888_256x240.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/images/ui-icons_888888_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..5ba708c39172a69e069136bd1309c4322c61f571 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery-ui.min.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery-ui.min.css new file mode 100644 index 00000000..b84984a9 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery-ui.min.css @@ -0,0 +1,4 @@ +/*! jQuery UI - v1.10.3 - 2013-05-03 +* http://jqueryui.com +* Includes: jquery.ui.core.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css, jquery.ui.theme.css +* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:700;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:21px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:0}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:400}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:400;margin:-1px}.ui-menu .ui-state-disabled{font-weight:400;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url(images/animated-overlay.gif);height:100%;filter:alpha(opacity=25);opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:0;background:0;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:0;border-bottom:0;border-right:0}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:700}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:400;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:400;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:400;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.accordion.min.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.accordion.min.css new file mode 100644 index 00000000..ed3c1928 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.accordion.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.10.3 - 2013-05-03 +* http://jqueryui.com +* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.autocomplete.min.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.autocomplete.min.css new file mode 100644 index 00000000..0483da2e --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.autocomplete.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.10.3 - 2013-05-03 +* http://jqueryui.com +* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-autocomplete{position:absolute;top:0;left:0;cursor:default} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.button.min.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.button.min.css new file mode 100644 index 00000000..c8760521 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.button.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.10.3 - 2013-05-03 +* http://jqueryui.com +* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.core.min.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.core.min.css new file mode 100644 index 00000000..d406adf7 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.core.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.10.3 - 2013-05-03 +* http://jqueryui.com +* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.datepicker.min.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.datepicker.min.css new file mode 100644 index 00000000..26e9711f --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.datepicker.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.10.3 - 2013-05-03 +* http://jqueryui.com +* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:700;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.dialog.min.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.dialog.min.css new file mode 100644 index 00000000..d0f7c46e --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.dialog.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.10.3 - 2013-05-03 +* http://jqueryui.com +* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:21px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.menu.min.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.menu.min.css new file mode 100644 index 00000000..d7569ed2 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.menu.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.10.3 - 2013-05-03 +* http://jqueryui.com +* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:0}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:400}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:400;margin:-1px}.ui-menu .ui-state-disabled{font-weight:400;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.progressbar.min.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.progressbar.min.css new file mode 100644 index 00000000..51c066cc --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.progressbar.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.10.3 - 2013-05-03 +* http://jqueryui.com +* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url(images/animated-overlay.gif);height:100%;filter:alpha(opacity=25);opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.resizable.min.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.resizable.min.css new file mode 100644 index 00000000..6e3d9126 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.resizable.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.10.3 - 2013-05-03 +* http://jqueryui.com +* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.selectable.min.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.selectable.min.css new file mode 100644 index 00000000..897c47e0 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.selectable.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.10.3 - 2013-05-03 +* http://jqueryui.com +* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.slider.min.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.slider.min.css new file mode 100644 index 00000000..7c780c61 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.slider.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.10.3 - 2013-05-03 +* http://jqueryui.com +* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.spinner.min.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.spinner.min.css new file mode 100644 index 00000000..31769e38 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.spinner.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.10.3 - 2013-05-03 +* http://jqueryui.com +* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:0;background:0;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:0;border-bottom:0;border-right:0}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.tabs.min.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.tabs.min.css new file mode 100644 index 00000000..7458c4d2 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.tabs.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.10.3 - 2013-05-03 +* http://jqueryui.com +* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav li a{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active a,.ui-tabs .ui-tabs-nav li.ui-state-disabled a,.ui-tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:text}.ui-tabs .ui-tabs-nav li a,.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.theme.min.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.theme.min.css new file mode 100644 index 00000000..ae3db333 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.theme.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.10.3 - 2013-05-03 +* http://jqueryui.com +* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:700}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:400;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:400;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:400;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.tooltip.min.css b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.tooltip.min.css new file mode 100644 index 00000000..1f5ea908 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Content/themes/base/minified/jquery.ui.tooltip.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.10.3 - 2013-05-03 +* http://jqueryui.com +* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */ + +.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/AccountController.cs b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/AccountController.cs new file mode 100644 index 00000000..ced9e3ef --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/AccountController.cs @@ -0,0 +1,201 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; +using System.Web.Security; +using Spring.Mvc5QuickStart.Models; + +namespace Spring.Mvc5QuickStart.Controllers +{ + + [Authorize] + public class AccountController : Controller + { + + // + // GET: /Account/Login + + [AllowAnonymous] + public ActionResult Login(string returnUrl) + { + ViewBag.ReturnUrl = returnUrl; + return View(); + } + + // + // POST: /Account/Login + + [AllowAnonymous] + [HttpPost] + public ActionResult Login(LoginModel model, string returnUrl) + { + if (ModelState.IsValid) + { + if (Membership.ValidateUser(model.UserName, model.Password)) + { + FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe); + if (Url.IsLocalUrl(returnUrl)) + { + return Redirect(returnUrl); + } + else + { + return RedirectToAction("Index", "Home"); + } + } + else + { + ModelState.AddModelError("", "The user name or password provided is incorrect."); + } + } + + // If we got this far, something failed, redisplay form + return View(model); + } + + // + // GET: /Account/LogOff + + public ActionResult LogOff() + { + FormsAuthentication.SignOut(); + + return RedirectToAction("Index", "Home"); + } + + // + // GET: /Account/Register + + [AllowAnonymous] + public ActionResult Register() + { + return View(); + } + + // + // POST: /Account/Register + + [AllowAnonymous] + [HttpPost] + public ActionResult Register(RegisterModel model) + { + if (ModelState.IsValid) + { + // Attempt to register the user + MembershipCreateStatus createStatus; + Membership.CreateUser(model.UserName, model.Password, model.Email, passwordQuestion: null, passwordAnswer: null, isApproved: true, providerUserKey: null, status: out createStatus); + + if (createStatus == MembershipCreateStatus.Success) + { + FormsAuthentication.SetAuthCookie(model.UserName, createPersistentCookie: false); + return RedirectToAction("Index", "Home"); + } + else + { + ModelState.AddModelError("", ErrorCodeToString(createStatus)); + } + } + + // If we got this far, something failed, redisplay form + return View(model); + } + + // + // GET: /Account/ChangePassword + + public ActionResult ChangePassword() + { + return View(); + } + + // + // POST: /Account/ChangePassword + + [HttpPost] + public ActionResult ChangePassword(ChangePasswordModel model) + { + if (ModelState.IsValid) + { + + // ChangePassword will throw an exception rather + // than return false in certain failure scenarios. + bool changePasswordSucceeded; + try + { + MembershipUser currentUser = Membership.GetUser(User.Identity.Name, userIsOnline: true); + changePasswordSucceeded = currentUser.ChangePassword(model.OldPassword, model.NewPassword); + } + catch (Exception) + { + changePasswordSucceeded = false; + } + + if (changePasswordSucceeded) + { + return RedirectToAction("ChangePasswordSuccess"); + } + else + { + ModelState.AddModelError("", "The current password is incorrect or the new password is invalid."); + } + } + + // If we got this far, something failed, redisplay form + return View(model); + } + + // + // GET: /Account/ChangePasswordSuccess + + public ActionResult ChangePasswordSuccess() + { + return View(); + } + + private IEnumerable GetErrorsFromModelState() + { + return ModelState.SelectMany(x => x.Value.Errors.Select(error => error.ErrorMessage)); + } + + #region Status Codes + private static string ErrorCodeToString(MembershipCreateStatus createStatus) + { + // See http://go.microsoft.com/fwlink/?LinkID=177550 for + // a full list of status codes. + switch (createStatus) + { + case MembershipCreateStatus.DuplicateUserName: + return "User name already exists. Please enter a different user name."; + + case MembershipCreateStatus.DuplicateEmail: + return "A user name for that e-mail address already exists. Please enter a different e-mail address."; + + case MembershipCreateStatus.InvalidPassword: + return "The password provided is invalid. Please enter a valid password value."; + + case MembershipCreateStatus.InvalidEmail: + return "The e-mail address provided is invalid. Please check the value and try again."; + + case MembershipCreateStatus.InvalidAnswer: + return "The password retrieval answer provided is invalid. Please check the value and try again."; + + case MembershipCreateStatus.InvalidQuestion: + return "The password retrieval question provided is invalid. Please check the value and try again."; + + case MembershipCreateStatus.InvalidUserName: + return "The user name provided is invalid. Please check the value and try again."; + + case MembershipCreateStatus.ProviderError: + return "The authentication provider returned an error. Please verify your entry and try again. If the problem persists, please contact your system administrator."; + + case MembershipCreateStatus.UserRejected: + return "The user creation request has been canceled. Please verify your entry and try again. If the problem persists, please contact your system administrator."; + + default: + return "An unknown error occurred. Please verify your entry and try again. If the problem persists, please contact your system administrator."; + } + } + #endregion + } +} diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/CountController.cs b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/CountController.cs new file mode 100644 index 00000000..a2a87afa --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/CountController.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; + +namespace Spring.Mvc5QuickStart.Controllers +{ + public class CountController : Controller + { + private readonly Counter _counter; + + public CountController(Counter counter) + { + _counter = counter; + } + + public ActionResult Index() + { + ViewBag.Message = _counter.Count; + + return View(); + } + } +} diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/HomeController.cs b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/HomeController.cs new file mode 100644 index 00000000..afac5229 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/HomeController.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; + +namespace Spring.Mvc5QuickStart.Controllers +{ + public class HomeController : Controller + { + protected string Message { get; set; } + + public ActionResult Index() + { + ViewBag.Message = Message; + + return View(); + } + + public ActionResult About() + { + ViewBag.Message = "Your app description page."; + + return View(); + } + + public ActionResult Contact() + { + ViewBag.Message = "Your contact page."; + + return View(); + } + } +} diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/OdataController.cs b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/OdataController.cs new file mode 100644 index 00000000..de5b0f6a --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/OdataController.cs @@ -0,0 +1,51 @@ +using System.Collections.Generic; +using System.Linq; +using System.Web.Http; + +namespace Spring.Mvc5QuickStart.Controllers +{ + public class OdataController : ApiController + { + // GET /api/odata/5 + public string Get(int id) + { + return "value"; + } + + // GET /api/odata?$skip=1&$top=2 + // GET /api/odata?$filter=SomeProperty%20eq%203 + [Queryable] + public IQueryable Get() + { + var dataItems = new[] + { + new SampleDataItem { SomeProperty = 1 }, + new SampleDataItem { SomeProperty = 2 }, + new SampleDataItem { SomeProperty = 3 }, + new SampleDataItem { SomeProperty = 4 }, + }; + + return dataItems.AsQueryable(); + } + + // POST /api/odata + public void Post(string value) + { + } + + // PUT /api/odata/5 + public void Put(int id, string value) + { + } + + // DELETE /api/odata/5 + public void Delete(int id) + { + } + } + + public class SampleDataItem + { + public int SomeProperty { get; set; } + } +} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/SuffixController.cs b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/SuffixController.cs new file mode 100644 index 00000000..def66132 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/SuffixController.cs @@ -0,0 +1,38 @@ +using System.Collections.Generic; +using System.Web.Http; + +namespace Spring.Mvc5QuickStart.Controllers +{ + public class SuffixController : ApiController + { + public string Suffix { get; set; } + + // GET /api/suffix + public IEnumerable Get() + { + return new string[] { string.Format("value1_{0}", Suffix), string.Format("value2_{0}", Suffix) }; + } + + // GET /api/suffix/5 + public string Get(int id) + { + return string.Format("value{0}_{1}", Suffix, id); + } + + // POST /api/suffix + public void Post(string value) + { + } + + // PUT /api/suffix/5 + public void Put(int id, string value) + { + } + + // DELETE /api/suffix/5 + public void Delete(int id) + { + } + } + +} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/SuffixNestedController.cs b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/SuffixNestedController.cs new file mode 100644 index 00000000..04c8ed31 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/SuffixNestedController.cs @@ -0,0 +1,41 @@ +using System.Collections.Generic; +using System.Web.Http; + +namespace Spring.Mvc5QuickStart.Controllers +{ + public class SuffixNestedController : ApiController + { + //same public API as SuffixController, only here so that its config can be shown to + // be properly read out of a separate 'child' config file + + public string Suffix { get; set; } + + // GET /api/suffixnested + public IEnumerable Get() + { + return new string[] { string.Format("value1_{0}", Suffix), string.Format("value2_{0}", Suffix) }; + } + + // GET /api/suffixnested/5 + public string Get(int id) + { + return string.Format("value{0}_{1}", Suffix, id); + } + + // POST /api/suffixnested + public void Post(string value) + { + } + + // PUT /api/suffixnested/5 + public void Put(int id, string value) + { + } + + // DELETE /api/suffixnested/5 + public void Delete(int id) + { + } + } + +} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/ValuesController.cs b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/ValuesController.cs new file mode 100644 index 00000000..203e342e --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Controllers/ValuesController.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using System.Web.Http; + +namespace Spring.Mvc5QuickStart.Controllers +{ + public class ValuesController : ApiController + { + // GET /api/values + public IEnumerable Get() + { + return new string[] { "value1", "value2" }; + } + + // GET /api/values/5 + public string Get(int id) + { + return "value"; + } + + // POST /api/values + public void Post(string value) + { + } + + // PUT /api/values/5 + public void Put(int id, string value) + { + } + + // DELETE /api/values/5 + public void Delete(int id) + { + } + } + +} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Counter.cs b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Counter.cs new file mode 100644 index 00000000..6c21c493 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Counter.cs @@ -0,0 +1,14 @@ +namespace Spring.Mvc5QuickStart +{ + //intended to be instantiated as a singleton by the parent ApplicationContext so that it can keep track of its hit-count + // as the page is visited (NOTE: this impl. is for demo purposes only and is obviously NOT threadsafe!) + public class Counter + { + private int _count; + public int Count + { + get { return _count++; } + set { _count = value; } + } + } +} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Global.asax b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Global.asax new file mode 100644 index 00000000..bd45db94 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Global.asax @@ -0,0 +1 @@ +<%@ Application Codebehind="Global.asax.cs" Inherits="Spring.Mvc5QuickStart.MvcApplication" Language="C#" %> diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Global.asax.cs b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Global.asax.cs new file mode 100644 index 00000000..f4cbae97 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Global.asax.cs @@ -0,0 +1,40 @@ +using System.Web.Mvc; +using System.Web.Optimization; +using System.Web.Routing; +using Spring.Web.Mvc; + +namespace Spring.Mvc5QuickStart +{ + // Note: For instructions on enabling IIS6 or IIS7 classic mode, + // visit http://go.microsoft.com/?LinkId=9394801 + + public class MvcApplication : SpringMvcApplication + { + protected void Application_Start() + { + AreaRegistration.RegisterAllAreas(); + + FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); + RouteConfig.RegisterRoutes(RouteTable.Routes); + BundleConfig.RegisterBundles(BundleTable.Bundles); + } + + protected override System.Web.Http.Dependencies.IDependencyResolver BuildWebApiDependencyResolver() + { + //get the 'default' resolver, populated from the 'main' config metadata + var resolver = base.BuildWebApiDependencyResolver(); + + //check if its castable to a SpringWebApiDependencyResolver + var springResolver = resolver as SpringWebApiDependencyResolver; + + //if it is, add additional config sources as needed + if (springResolver != null) + { + springResolver.AddChildApplicationContextConfigurationLocation("file://~/Config/child_controllers.xml"); + } + + //return the fully-configured resolver + return resolver; + } + } +} \ No newline at end of file diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/NuGetGallery.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/NuGetGallery.png new file mode 100644 index 0000000000000000000000000000000000000000..a648af66ccabc52341cb550c315ba495f670de34 GIT binary patch literal 4144 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 DsOMYV literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/accent.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/accent.png new file mode 100644 index 0000000000000000000000000000000000000000..cd07580d6180aca070d174afc76fa9d284b29f5c GIT binary patch literal 528 zcmV+r0`L8aP)X1^@s6ZJkZ`00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-mPtfGRCwCt*dcFIVH5`7rx$@iKyVX;gk%B)7!VUn(1d_QE_3i3Kw;)OMIEW^ z+!j{7WTFODu?dnTWMYnNVrF7Fh@CdgShp6+*53OjpJ@7t^Cb7S=bTzZe8gwf$fp9k zs*~LUT^v>bdx&m|St$OFg52MZ~j+ zXiYJ;l{K0aSVTOCi24*_>si}Kj#@;F^N!T;0q^l-3jSvs`D;8fVq9=93s}YyZrwn; z*vzJ4?8U|3f_r(F=gl<^0Ea36Q_&M|)B06+1=+1j}4Y`Hk`{2l<@pzzzO S;N^z^0000^a?Pn+!x0HnZV}2XGPe+Q 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 literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/bullet.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/bullet.png new file mode 100644 index 0000000000000000000000000000000000000000..d3824c15594223636fad93eeabf5f01082972ddd GIT binary patch literal 2867 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 ReSiP}002ovPDHLkV1hp?NGbpT literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/facebook.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/facebook.png new file mode 100644 index 0000000000000000000000000000000000000000..963ec2fd567f20b6625dece5c7b320d525a569c8 GIT binary patch literal 529 zcmV+s0`C2ZP)(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-mq|oHRCwCNmQAkWFc5^lwv&m(kAxIZHY`}M$t5@h7v(OnL7V{)NJRW4?zcd; z!o10hGE6jCIgV82uBz@>RFy8D$S+o_)g6$30jjF9TrT4`g0d`sbWwrv3lX7Hg3di? zsWHwud_Y75Ywc$Qs)~rm+{fe!o)`#S0{gu-5XcvC~*Vy^1`~8I4B7aU9Y#9*^P*v665qJP! z{&YHJHk$!(JRaHYb^ugW6?&o-f%l;(3d*u1P1EqLsw&RsGpdTU_A>%w%r_7b3GYqd zf1IZEVfMR2{MT`9em-qy{{w4n`KnkNrBYQMk4G@sk82<2dUFN|yS`O)?!ngpPng4R T1-!G<00000NkvXXu0mjfQ(54* literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/findHosting.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/findHosting.png new file mode 100644 index 0000000000000000000000000000000000000000..9cd2a7e864999de9e8ebf701cc926ea736c7c946 GIT binary patch literal 4329 zcmaJ_cU)6R*A6J)s;G1Ykri_x=8O_r1S!@3iwgb7tn;Gk0#hqrH{zUg^C606-XF z4Rz+F^Srxik09@P^beIPUUGy2^Psp8{V3t+P%OY4L%e_mBJgN`tTPskxfs%oJq-Zt z0tLEyP&|-!5MLr*1HGf85rHT1&;Y<`(+CpU7l)+)FJS!x3C5t0%@0AqK#Vcyj2==G zNwUNS1X@RiVqGHbU40{QzD5|3sR{6O1cXO`$5PP12z)Ss42duX{osZ0@;lXF5b%cz z1!oNU%P0?|BhZo}9IBocr-jOYtQD#aMYv-Gba;7R|`63Bl~6K}%65oi)vOG9&K zNIw;k$p5X1$N!^ErZ{8&WAA?@Cc9oFVZqK=GLahU%Ud`<`JJvv5X(?3nnDb9B@%;w z&Z1)gkwPQ~5J^Bw7d;>n?HfqgDgV$%A|VI@nSv(xVi8bd5RXA4Fc1UL*Vfmu)YH|r zgzCVxv|ySR76y7yBXeziLv0I7BVC=JSSZn#ipLTtKe3qqV0Hc#yWzz_cs>v@3v_DD;CT%2E4Pd|8JpxR`I-NC;N}v@(TYrK9<1q z_E4T%qXO`5yjRT!0X27x7+=UeLmVELHfvB8Tao}8T8k^1>pJZ^L5a95^eR?p`=s^h z%K*MB0FgM+JtxJT6dDq1Yz8oR)hb?^eOqRISrIYe`;qAwX#}i5OO?v_5 z4hfck%gh~N@BK@j1IE!Z4tb{$(FYzKC2f5TQBGxc#OxA^+8k~0v{=oAp zWT@VAZR~NEAIXl@#Vwba#(B%2BVTKcc7Ic>ur0{T%5o;YY+Frp$TunDWy-3~J%r~O zrm3R}XZ!Q3B*AByY2b5}X(zp&986+57T*D%YjZs)XR@*zDfSr4y(MQFStTbYcjn7% zpUc&&S0756xmRC?_BDrpj4X_=uJ4TASSf3;?vy=t%pJ#JzCJInhLNyQ$j!(&v4tUh z-=I=IP8;iKYZqR>e%TI1P0$I}f>o?Y!{Hf;fDyfiy!vVreB815Y z1sZ2tJjzSWr(2`$+2@#b6y0xI3(RkC7$r${=%Jj^(QF6TaMfpwg}rq_-f!N53! zjiGOCR7C2e96}Qb7MwwPhtj2cbeaKinskU>m%|2rzfNyG+Z%rXWos^Y>P6)}ef*N* zkx&&H`7$$h`On7*Hn#3kbP3cxnDp%vn6)HDAP$XbEN!Y>?I~oq9;VmPH;RIlrRjq5 zY6ANKC_cJ`bOH^cp|dHEdpq9-V0-dwPw>5nVc%rNcDxx`qnF_TsC|}7+x(}j^Ywht zAJ84OyWgm0Z?1o=kTd;_q^W*f%95?Esdwg0tGQ7w7)XM=DVJ`1&{8Rt(QE8_>zMJ}_xt;_Z=^om-)$$#4oXaPPDU-g4L)ZD zeJ*d66p?bh_a)>PHFoi<&}7U7Jq%LZ&9AX){2~7wayWPUdz~Ha-7+D9?J4Fo z|EnJRS?($BgViTJscJZtg>>+_Ly{;ibgqOd<#x@xf#CC=%<>_0Ia#5ttgN)eQQTX@ zj5+nWyU1)1Y;~;dQq-R&ZcypGjBYuUaWU8R*()k+_hcO|J!C~zTDp8HJSQXL)pFjjRPgW<<=gSGx_yFSceV7 z`_1=j^tz6?Vrp)%r(k;m3AO3?mb$sNSm7h5zDr43wIa^5t5o%h?CA*2h5%92mp!IZ z)?D0>5ZAz+1GyQb6Pvm&@_8OQu!|wj-dvpS@S8U!WPb7FvP^_#%YoVKFu^3rYow~5P>-L1SxQ3OKH2w^9P$B z#TA*fHt%YOnc4H@k;lE8!|spH9Z7_2Hyw*FR#WagtiFvp?@s+Pi`;L{ zY4jZ^gr#nCJ9ft>yUltgw>i5gDJzeB{Tjh!!eE4NFTb?ivtz=gC#%_>BdC?~hzXkN zh+6ja*Aceh-S+nOymY42ah5*at-{@D8J8h4X3`D93DYSzeAJRe*NRENpw!oXJ$&dA zy7krTPgVAl*JaqRggpBhBc%t_uFiBlc_M8}v(6-~lQDhXq$Jr>voMdw$8aD2rCZH| zkDs_{>K`()g2UtPva=G!>7^zn9}?3|Oft`VYJg`15o?ExO3v~==N`42xks&*>ftyM zQn9w4TXQ37tFQkMa+th(uRE}?hSF}G(2O|=3K+CIe3{wkQZFo{AK?f-fw(e8_!tYz!O$io z8wgh>hixRqP{?b#3<<48b5k_{i(hl<1Z(Z^)7IVWakFk-ya1rkl`dY+XEBRq!)dp9 zkp{pMR7?{Xh^rdC#0w`p9qS^7gmn?$PH@?2rAydchbv$fRRW;=Kek*m_dC4p)W%r+ zXFC8@u>Cyl8q-*SX8mKkHMcr?MG27Len)4UY_GkVje_+dZY1~S8LT>?XZ#; zcP-YOj`v&PhelKKT(ma*4lJqUg$w7Ch3gxS_cxD+rQo**<0B>q^5%D^jXkO#TN3qN zPtRP^p7PmREsIXepIUv`+}ppj9DY7?Z*czJmafFL#@tuy6yL$hup~L7g-0KRVBF;- zC7ICK6Lyc;W8n>fr9XXl)9qsIpR82xY8k(=@7Unm|i-QhH^J3q*Fwv9k_!-J}UQg zk8jF@0>=Z!2RmuDQC=b+h?1zHYkD-M{Q*R7GN>Hk%dinaq?#+}F-8=GIdc8i<8t(S z1a{C{S0;%oTE$S z6uXWoC_bA2xD_)|bH#zqFVzD{97u(X7-}_4%m6g_Oi9N)x&e6yQ3niwHr!(M8=%WCk`z-n5QSxrUUlSY&5WKR{O;p(Q;^0|qK? z2XG=uL9$DoIn~Tzl+XPrSZvPct;*XdWSa@H#T|M(SP|N1DB_iM^nOO^SkGa-+}jss z88tS-c7zy)K5i80AzLpt)G8(wQZ(0y9&8fvF>P9?(Nf+$ddK#u=O|6=t63{OjNgJH z3cBE}kXYfB1^pvUK%_U=(I#8aU*ZMwTTAxupS%68rqJ46)D9Thv+NV&WUq=@RDzCh`?od1I&^ zlzq1^u#lWJ;Ed=fmVL@ttFcQ$s<4z`k}@P)X1^@s6ZJkZ`00009a7bBm000XU z000XU0RWnu7ytkOAY({UO#lFTB>(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ-!bwCyRCwCt*e`4oQ5XR5A4equf7_`CC#nMxjlV=lt<*pqwW0=BUJI%z_;(&FMl`!P2Oi9Ykq@!acmi zH@v{@Ie5=jv3A-5byo0T^?rx1c#dbdcn;geTG&)%X%bKL<%~vKnFB#RJ^OJzSZxWMf8i&7;5&949UFHY9WKs1eh&c0*l)|oC;FuT0000< KMNUMnLSTXx_VD2V literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList0.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList0.png new file mode 100644 index 0000000000000000000000000000000000000000..7a4ea253aebd7c2fab5a14d7255d694c1f9825ed GIT binary patch literal 3424 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 literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList2.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList2.png new file mode 100644 index 0000000000000000000000000000000000000000..553a2da214a384b7ac96fd2d2c67bb344469b5f8 GIT binary patch literal 733 zcmV<30wVp1P)(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;V@X6oRCwCN*D+{RSri7~FHx*EPY48rfQup|udt9jCXI^_#zj$-*jOfoAd&>ae{+j_ z@A>aJ=RfzJ+tX||{U6v1Q55A_dk7bC68kZPAFzTAEMXBZ@)+xBHk(<*WB3gtIi2}{ zo4AYhZi{-iFmM1*@T>qS4B#)k!HJ^8NAU`$wvomoc#6rcIqpFEGRfn1u@CnWE!^J9 z;{iO{A<{JdNJQC{_#O`KLiOyy1N3(a^%%}%SqOr_`1rWd(NWN7G}P;L^?E&PYd@~z z*Y1k0EiK6HW*~G*| z#{+c`+hjV&=kg>fj$>0(Q=7tCtJSQou7cs=;XG!}rE`2dFL5WVt*vbuGcbaEEsux3 zRjz}BgG!~6IF7$~o}-*({k^HA7bdM%tHLleH#cW_dAU$s zw}}7S4(YFeMZEGIN#En&RyjS!m8=~zGc&?4)Mzx6%Vp(qdDDEQ zQpuz2#dIAnC7r`SmdCBJR4R46*>d21`(1rCdA@cNi#Xl>EZ)JpT_oMWwNCHxIxZ&* zb_2hsMcm#9JWro$2eE`3Sg78mfTNMF5(;iNI& z_=eCPYY%T;V)zG_@MH2j*y<(tJE@GH@N?E}nCA=A?H|>jDwCC>20jk}-R7=SX!{dO P00000NkvXXu0mjfLkUt? literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList3.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList3.png new file mode 100644 index 0000000000000000000000000000000000000000..0714981a81788e51f0aa19fe1dc3aa200b5a0cd3 GIT binary patch literal 772 zcmV+f1N;1mP)(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ;ib+I4RCwCN*H36vR}{zbPpo9+q!0)c0!oXJnS~32$mgI}PP>Ib`q0xQ;9M5ED3qE$mC^!ZKEiMKBZnxAVF^!hDX;JatmBI#l<_=%$6VhU?<4vot>aN`7|SUO z4-SfW43CdVwA=2bQ1%sG#@Q3NJs;o~jP94}8GJd&!_?H2>FH^uQVFcDuUlDJktE5W zqoeo%-}PRn%@BGwH#gr|Yq#6#^?Hc-TYQ2zOZ8;vm1(tFs@1A;xom!ZUL40trIJde z5(?W~ca5)w7OT-{h~pS+Y;0(?TA)xUgu1xaE&S!k07Q*LkAuwpy)bVPQcW$Eww8=&|Vxu4jjZE2BDtEYO~3!doG`vu@QJaZajV z;7tbCuece~E*BRUMNuS4l0A*1*=&XiuXgw9wRCbAJLp6l#|njl+1c4WYt3eJH{}8L zb8oNyCjEU0i5#}KxATykMSHbZcsLzb&Y#d=xr1`X)2W_6$JgnGld!wp5cduOf8zTS z5M9HqLBrl1e0z+Mub|pH>h_y5@8c`{b41afP{Y4@=IT`x)4_b_5UIV`o8C}ic!?W0 zm%a`*4%quQ9^x~6KByapJYo91qei=~$yQzm{|^8zTg8!`h%F8P0000 literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList4.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList4.png new file mode 100644 index 0000000000000000000000000000000000000000..ce91e8f64955deadeabcfbf0cca26b192c945323 GIT binary patch literal 3355 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 literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList6.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList6.png new file mode 100644 index 0000000000000000000000000000000000000000..3b9aa05a9cb5991971434ab050c07794260a6e32 GIT binary patch literal 3757 zcmV;e4pQ-nP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000BnNklHB$rO1vBKiSt?&DNt_vzxbLVc03LKV00#g7 z|NmUfu?+wq2mryuF<67$9GNw+GBK84+{gcjs+!Ey-4F{mU>5c(4gdfE|NmUhu?c`c z5Jb_Z#cTzaUNQEw4P2zfSeCFx!eaUvc(YZNF$Vk&IdFYyK}7VyiD&O6Gp)6Hnw{v( z#0@V100960Y|yb0gfI+5(Fe&@a4Ef*V$=qe-M9fa0U;$2U1BpB$fViX)n7e&+&jUF z>8_2Kn~-zv{yE|Y5h112Sx@R3FCw~|JHAj#xze9NZ^)k(J7B5vR`=r%00960jFQ0# zfG`jQM+x?DU>B*uhmE8OzgCet@)GPIJy?JhD2RS8A~AydOm3IGNpcWq`?-*`0xht= z3M-5A!-)3Ybf$Zn&m3aLEY}1Kb?GKOvU83Y<5$3FN~a+NLKgUmmgj_0-kp8&Gu4CQ4|GPmf5BOuroc&s?U#Ttx1xEvMgKY$)VOL<< zqv`@Un?28Z1fGDiji(3PI|4Vr(#1Bwr26D?OMj@6uj|Se>t(FcKoErC&uArvKtQ-l zr_EMr63{kS33fI}+!Y)J?|5>6j5xym_ZVNbf?;gV_a0i4a-ND_Ffz&Bw3 zu_%%??}C?$tc70$CnZ*^2jB}RyMc`y#GFbgMZ4W5iXu9l4q+HlsZ^-dYSZ#fQCUuL z7x;8{d;?sk&2km0wVqb$vIqe7UBstZUps#?91dx4K@boG0iNeE7z}7M8jD1|U5JIBs_}RXfbaW%#*Hx~n9(ea+#MfDMyE#H z?REjsS`&sL^?IFVv&m#Knb%B`^az~C0dfi4<(cU`gta#A;Pa^O+|Dey4#d)}vwGde zUly|fd6U|{68^42&%ox)b0!g)0Qa&1A9z|~6R*-d*MMX347r;`R;Mb*Z0l&zAN&pg XjsYQ9W9b5&00000NkvXXu0mjfoQ~>@ literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList7.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList7.png new file mode 100644 index 0000000000000000000000000000000000000000..f99c609f553957977407a39a11538f8656a45d32 GIT binary patch literal 3651 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 V^Gy#~msS7(002ovPDHLkV1g5dtH1yN literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList8.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList8.png new file mode 100644 index 0000000000000000000000000000000000000000..127596d105dd7862f48fe7aacf507fb7619b585e GIT binary patch literal 3467 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 literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList9.png b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Images/orderedList9.png new file mode 100644 index 0000000000000000000000000000000000000000..39cfdcf5768d99933867f86bcb2fdef2293d041e GIT binary patch literal 3446 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 literal 0 HcmV?d00001 diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Models/AccountModels.cs b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Models/AccountModels.cs new file mode 100644 index 00000000..0da0b0d3 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Models/AccountModels.cs @@ -0,0 +1,62 @@ +using System.ComponentModel.DataAnnotations; + +namespace Spring.Mvc5QuickStart.Models +{ + + public class ChangePasswordModel + { + [Required] + [DataType(DataType.Password)] + [Display(Name = "Current password")] + public string OldPassword { get; set; } + + [Required] + [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] + [DataType(DataType.Password)] + [Display(Name = "New password")] + public string NewPassword { get; set; } + + [DataType(DataType.Password)] + [Display(Name = "Confirm new password")] + [Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")] + public string ConfirmPassword { get; set; } + } + + public class LoginModel + { + [Required] + [Display(Name = "User name")] + public string UserName { get; set; } + + [Required] + [DataType(DataType.Password)] + [Display(Name = "Password")] + public string Password { get; set; } + + [Display(Name = "Remember me?")] + public bool RememberMe { get; set; } + } + + public class RegisterModel + { + [Required] + [Display(Name = "User name")] + public string UserName { get; set; } + + [Required] + [DataType(DataType.EmailAddress)] + [Display(Name = "Email address")] + public string Email { get; set; } + + [Required] + [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] + [DataType(DataType.Password)] + [Display(Name = "Password")] + public string Password { get; set; } + + [DataType(DataType.Password)] + [Display(Name = "Confirm password")] + [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] + public string ConfirmPassword { get; set; } + } +} diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Properties/AssemblyInfo.cs b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..ecfdf6f9 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Spring.Mvc5QuickStart")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("Spring.Mvc5QuickStart")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2012")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("6b26b8b8-f1e7-4c83-8ffe-354feac65948")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Revision and Build Numbers +// by using the '*' as shown below: +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/_references.js b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/_references.js new file mode 100644 index 00000000..560a4cdf --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/_references.js @@ -0,0 +1,7 @@ +/// +/// +/// +/// +/// +/// +/// diff --git a/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/jquery-1.10.2.intellisense.js b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/jquery-1.10.2.intellisense.js new file mode 100644 index 00000000..2c4d454e --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/jquery-1.10.2.intellisense.js @@ -0,0 +1,2657 @@ +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. + /// 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. We recommend against using this property; please try to use feature detection instead (see jQuery.support). jQuery.browser may be moved to a plugin in a future release of jQuery. + /// + }, + 'browser.version': function() { + /// The version number of the rendering engine for the user's browser. + /// + }, + '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. + /// + /// + }, + '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 + /// DOM 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. + /// 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, that is 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. + }, + '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 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. + /// + }, + '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. + /// + }, + '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 expression 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. + /// The index of each child to match, starting with 1, the string even or odd, or an equation ( eg. :nth-last-child(even), :nth-last-child(4n) ) + /// + }, + '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 originally passed to jQuery(). + /// + }, + '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. + /// + /// + }, + '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. + /// An HTML snippet, selector expression, jQuery object, or DOM element 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. + /// An HTML snippet, selector expression, jQuery object, or DOM element 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/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/jquery-1.10.2.js b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/jquery-1.10.2.js new file mode 100644 index 00000000..c5c64825 --- /dev/null +++ b/examples/Spring/Spring.Mvc5QuickStart/Spring.Mvc5QuickStart/Scripts/jquery-1.10.2.js @@ -0,0 +1,9789 @@ +/*! + * jQuery JavaScript Library v1.10.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-07-03T13:48Z + */ +(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 + // The deferred used on DOM ready + readyList, + + // A central reference to the root jQuery(document) + rootjQuery, + + // Support: IE<10 + // 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 = "1.10.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, + + // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE) + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/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>|)$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, + rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g, + + // 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 + completed = function( event ) { + + // readyState === "complete" is good enough for us to call the dom ready in oldIE + if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { + detach(); + jQuery.ready(); + } + }, + // Clean-up method for dom ready events + detach = function() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + + } else { + document.detachEvent( "onreadystatechange", completed ); + window.detachEvent( "onload", completed ); + } + }; + +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 ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(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 src, copyIsArray, copy, name, options, 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 + // Non-digits removed to match rinlinejQuery + 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; + } + + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready ); + } + + // 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 || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + /* jshint eqeqeq: false */ + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + if ( obj == null ) { + return String( obj ); + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[ core_toString.call(obj) ] || "object" : + typeof obj; + }, + + isPlainObject: function( obj ) { + var key; + + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !core_hasOwn.call(obj, "constructor") && + !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Support: IE<9 + // Handle iteration over inherited properties before own properties. + if ( jQuery.support.ownLast ) { + for ( key in obj ) { + return core_hasOwn.call( obj, key ); + } + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + for ( key in obj ) {} + + return key === undefined || core_hasOwn.call( obj, key ); + }, + + 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: function( data ) { + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + if ( data === null ) { + return data; + } + + if ( typeof data === "string" ) { + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + if ( data ) { + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + } + } + } + + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + if ( !data || typeof data !== "string" ) { + return null; + } + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && jQuery.trim( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.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; + }, + + // Use native String.trim function wherever possible + trim: core_trim && !core_trim.call("\uFEFF\xA0") ? + function( text ) { + return text == null ? + "" : + core_trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // 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 ) { + var len; + + if ( arr ) { + if ( core_indexOf ) { + return core_indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + 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 args, proxy, tmp; + + 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: function() { + return ( new Date() ).getTime(); + }, + + // 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 ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", completed ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", completed ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + 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.10.2 + * http://sizzlejs.com/ + * + * Copyright 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2013-07-03 + */ +(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( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + 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 ); +} + +/** + * 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 + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = attrs.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 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.defaultView; + + // 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 + // IE6-8 do not support the defaultView property so parent will be undefined + if ( parent && parent.attachEvent && parent !== parent.top ) { + 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 ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* 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 = rnative.test( 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 = rnative.test( (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 = rnative.test( 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 + ---------------------------------------------------------------------- */ + + // 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; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// 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 ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +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; +} + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome<14 +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = hasDuplicate; + +// Initialize against the default document +setDocument(); + +// 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( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + elem[ name ] === true ? name.toLowerCase() : null; + } + }); +} + +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 // Flag to know if list is currently firing + firing, + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // First callback to fire (used internally by add and fireWith) + firingStart, + // 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 ) { + if ( list && ( !fired || stack ) ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + 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 all, a, input, select, fragment, opt, eventName, isSupported, i, + div = document.createElement("div"); + + // Setup + div.setAttribute( "className", "t" ); + div.innerHTML = "
a"; + + // Finish early in limited (non-browser) environments + all = div.getElementsByTagName("*") || []; + a = div.getElementsByTagName("a")[ 0 ]; + if ( !a || !a.style || !all.length ) { + return support; + } + + // First batch of tests + select = document.createElement("select"); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName("input")[ 0 ]; + + a.style.cssText = "top:1px;float:left;opacity:.5"; + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + support.getSetAttribute = div.className !== "t"; + + // IE strips leading whitespace when .innerHTML is used + support.leadingWhitespace = div.firstChild.nodeType === 3; + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + support.tbody = !div.getElementsByTagName("tbody").length; + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + support.htmlSerialize = !!div.getElementsByTagName("link").length; + + // Get the style information from getAttribute + // (IE uses .cssText instead) + support.style = /top/.test( a.getAttribute("style") ); + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + support.hrefNormalized = a.getAttribute("href") === "/a"; + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + support.opacity = /^0.5/.test( a.style.opacity ); + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + support.cssFloat = !!a.style.cssFloat; + + // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere) + support.checkOn = !!input.value; + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + support.optSelected = opt.selected; + + // Tests for enctype support on a form (#6743) + support.enctype = !!document.createElement("form").enctype; + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + support.html5Clone = document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>"; + + // Will be defined later + support.inlineBlockNeedsLayout = false; + support.shrinkWrapBlocks = false; + support.pixelPosition = false; + support.deleteExpando = true; + support.noCloneEvent = true; + support.reliableMarginRight = true; + support.boxSizingReliable = true; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Support: IE<9 + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + // Check if we can trust getAttribute("value") + input = document.createElement("input"); + input.setAttribute( "value", "" ); + support.input = input.getAttribute( "value" ) === ""; + + // Check if an input maintains its value after becoming a radio + input.value = "t"; + input.setAttribute( "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 = document.createDocumentFragment(); + fragment.appendChild( input ); + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<9 + // Opera does not clone events (and typeof div.attachEvent === undefined). + // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() + if ( div.attachEvent ) { + div.attachEvent( "onclick", function() { + support.noCloneEvent = false; + }); + + div.cloneNode( true ).click(); + } + + // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event) + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) + for ( i in { submit: true, change: true, focusin: true }) { + div.setAttribute( eventName = "on" + i, "t" ); + + support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false; + } + + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + // Support: IE<9 + // Iteration over object's inherited properties before its own. + for ( i in jQuery( support ) ) { + break; + } + support.ownLast = i !== "0"; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, marginDiv, tds, + divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-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"; + + body.appendChild( container ).appendChild( div ); + + // Support: IE8 + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + div.innerHTML = "
t
"; + tds = div.getElementsByTagName("td"); + tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Support: IE8 + // Check if empty table cells still have offsetWidth/Height + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Check box-sizing and margin behavior. + div.innerHTML = ""; + div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"; + + // 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"; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. (#3333) + // Fails in WebKit before Feb 2011 nightlies + // 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 ); + } + + if ( typeof div.style.zoom !== core_strundefined ) { + // Support: IE<8 + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + div.innerHTML = ""; + div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1"; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 ); + + // Support: IE6 + // Check if elements with layout shrink-wrap their children + div.style.display = "block"; + div.innerHTML = "
"; + div.firstChild.style.width = "5px"; + support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); + + if ( support.inlineBlockNeedsLayout ) { + // Prevent IE 6 from affecting layout for positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild( container ); + + // Null elements to avoid leaks in IE + container = div = tds = marginDiv = null; + }); + + // Null elements to avoid leaks in IE + all = select = fragment = opt = a = input = null; + + return support; +})({}); + +var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, + rmultiDash = /([A-Z])/g; + +function internalData( elem, name, data, pvt /* Internal Use Only */ ){ + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var ret, thisCache, + internalKey = jQuery.expando, + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + id = elem[ internalKey ] = core_deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + // Avoid exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( typeof name === "string" ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; +} + +function internalRemoveData( elem, name, pvt ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } else { + // 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 = name.concat( jQuery.map( name, jQuery.camelCase ) ); + } + + i = name.length; + while ( i-- ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + /* jshint eqeqeq: false */ + } else if ( jQuery.support.deleteExpando || cache != cache.window ) { + /* jshint eqeqeq: true */ + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } +} + +jQuery.extend({ + cache: {}, + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "applet": true, + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data ) { + return internalData( elem, name, data ); + }, + + removeData: function( elem, name ) { + return internalRemoveData( elem, name ); + }, + + // For internal use only. + _data: function( elem, name, data ) { + return internalData( elem, name, data, true ); + }, + + _removeData: function( elem, name ) { + return internalRemoveData( elem, name, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + // Do not set data on non-element because it will not be cleared (#8335). + if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) { + return false; + } + + var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ]; + + // nodes accept data unless otherwise specified; rejection can be conditional + return !noData || noData !== true && elem.getAttribute("classid") === noData; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var attrs, name, + data = null, + i = 0, + elem = this[0]; + + // Special expections of .data basically thwart jQuery.access, + // so implement the relevant behavior ourselves + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + 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 ] ); + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + return arguments.length > 1 ? + + // Sets one value + this.each(function() { + jQuery.data( this, key, value ); + }) : + + // Gets one value + // Try to fetch any internally stored data first + elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null; + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( 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 jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, 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 = jQuery._data( 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|object)$/i, + rclickable = /^(?:a|area)$/i, + ruseDefault = /^(?:checked|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + getSetInput = jQuery.support.input; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var 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; + + if ( typeof stateVal === "boolean" && type === "string" ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + 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 ), + classNames = value.match( core_rnotwhite ) || []; + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( type === core_strundefined || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( 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 ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var ret, hooks, 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 ) { + // Use proper attribute retrieval(#6932, #12072) + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + 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 ]; + + // oldIE 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 + if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + elem[ propName ] = false; + // Support: IE<9 + // Also clear defaultChecked/defaultSelected (if appropriate) + } else { + elem[ jQuery.camelCase( "default-" + name ) ] = + elem[ propName ] = false; + } + + // See #9699 for explanation of this approach (setting first, then removal) + } else { + jQuery.attr( elem, name, "" ); + } + + elem.removeAttribute( getSetAttribute ? name : propName ); + } + } + }, + + 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 ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + return tabindex ? + parseInt( tabindex, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + -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 if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + // IE<8 needs the *property* name + elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name ); + + // Use defaultChecked and defaultSelected for oldIE + } else { + elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true; + } + + 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 ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ? + function( elem, name, isXML ) { + var fn = jQuery.expr.attrHandle[ name ], + ret = isXML ? + undefined : + /* jshint eqeqeq: false */ + (jQuery.expr.attrHandle[ name ] = undefined) != + getter( elem, name, isXML ) ? + + name.toLowerCase() : + null; + jQuery.expr.attrHandle[ name ] = fn; + return ret; + } : + function( elem, name, isXML ) { + return isXML ? + undefined : + elem[ jQuery.camelCase( "default-" + name ) ] ? + name.toLowerCase() : + null; + }; +}); + +// fix oldIE attroperties +if ( !getSetInput || !getSetAttribute ) { + jQuery.attrHooks.value = { + set: function( elem, value, name ) { + if ( jQuery.nodeName( elem, "input" ) ) { + // Does not return so that setAttribute is also used + elem.defaultValue = value; + } else { + // Use nodeHook if defined (#1954); otherwise setAttribute is fine + return nodeHook && nodeHook.set( elem, value, name ); + } + } + }; +} + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = { + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + elem.setAttributeNode( + (ret = elem.ownerDocument.createAttribute( name )) + ); + } + + ret.value = value += ""; + + // Break association with cloned elements by also using setAttribute (#9646) + return name === "value" || value === elem.getAttribute( name ) ? + value : + undefined; + } + }; + jQuery.expr.attrHandle.id = jQuery.expr.attrHandle.name = jQuery.expr.attrHandle.coords = + // Some attributes are constructed with empty-string values when not defined + function( elem, name, isXML ) { + var ret; + return isXML ? + undefined : + (ret = elem.getAttributeNode( name )) && ret.value !== "" ? + ret.value : + null; + }; + jQuery.valHooks.button = { + get: function( elem, name ) { + var ret = elem.getAttributeNode( name ); + return ret && ret.specified ? + ret.value : + undefined; + }, + set: nodeHook.set + }; + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + set: function( elem, value, name ) { + nodeHook.set( elem, value === "" ? false : value, name ); + } + }; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }; + }); +} + + +// Some attributes require a special call on IE +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !jQuery.support.hrefNormalized ) { + // href/src property should get the full normalized URL (#10299/#12915) + jQuery.each([ "href", "src" ], function( i, name ) { + jQuery.propHooks[ name ] = { + get: function( elem ) { + return elem.getAttribute( name, 4 ); + } + }; + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Note: IE uppercases css property names, but if we were to .toLowerCase() + // .cssText, that would destroy case senstitivity in URL's, like in "background" + return elem.style.cssText || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = value + "" ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }; +} + +jQuery.each([ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +}); + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// 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 rformElems = /^(?:input|select|textarea)$/i, + 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 tmp, events, t, handleObjIn, + special, eventHandle, handleObj, + handlers, type, namespaces, origType, + elemData = jQuery._data( 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/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + var j, handleObj, tmp, + origCount, t, events, + special, handlers, type, + namespaces, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( 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; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + var handle, ontype, cur, + bubbleType, special, tmp, i, + 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 = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( 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. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && 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; + try { + elem[ type ](); + } catch ( e ) { + // IE<9 dies on focus/blur to hidden element (#1486,#12518) + // only reproducible on winXP IE8 native, not IE9 in IE8 mode + } + 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, ret, handleObj, matched, j, + handlerQueue = [], + args = core_slice.call( arguments ), + handlers = ( jQuery._data( 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 sel, handleObj, matches, i, + 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") ) { + + /* jshint eqeqeq: false */ + for ( ; cur != this; cur = cur.parentNode || this ) { + /* jshint eqeqeq: true */ + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && (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; + }, + + 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: IE<9 + // Fix target property (#1925) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Support: Chrome 23+, Safari? + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + // 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 fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var body, eventDoc, doc, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + 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 ) { + try { + this.focus(); + return false; + } catch ( e ) { + // Support: IE<9 + // If we error on focus to hidden element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + 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 ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { + 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 ) { + + // Even when returnValue equals to undefined Firefox will still show alert + 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 = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === core_strundefined ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// 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 ) { + return; + } + + // If preventDefault exists, run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + if ( !e ) { + return; + } + // If stopPropagation exists, run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original event to true + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var 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; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "submitBubbles" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "submitBubbles", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "changeBubbles", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var type, origFn; + + // 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 i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; 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, + ret = [], + 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 = ret.push( cur ); + break; + } + } + } + + return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret ); + }, + + // 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 jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( jQuery.unique(all) ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && 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 jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + if ( this.length > 1 ) { + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + ret = jQuery.unique( ret ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + } + + return this.pushStack( ret ); + }; +}); + +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 = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, 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 ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not; + }); +} +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
", "
" ], + area: [ 1, "", "" ], + param: [ 1, "", "" ], + thead: [ 1, "", "
" ], + tr: [ 2, "", "
" ], + col: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
", "
" ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +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++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + + // If this is a select, ensure that it displays empty (#12336) + // Support: IE<9 + if ( elem.options && jQuery.nodeName( elem, "select" ) ) { + elem.options.length = 0; + } + } + + 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 ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + 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 first, node, hasScripts, + scripts, doc, fragment, + 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 ) { + 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 || "" ) && + !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Hope ajax is available... + jQuery._evalUrl( node.src ); + } else { + jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return this; + } +}); + +// Support: IE<8 +// 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 = (jQuery.find.attr( elem, "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 elem, + i = 0; + for ( ; (elem = elems[i]) != null; i++ ) { + jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); + } +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function fixCloneNodeIssues( src, dest ) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using cloneNode. + if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) { + data = jQuery._data( dest ); + + for ( e in data.events ) { + jQuery.removeEvent( dest, e, data.handle ); + } + + // Event data gets referenced instead of copied if the expando gets copied too + dest.removeAttribute( jQuery.expando ); + } + + // IE blanks contents when cloning scripts, and tries to evaluate newly-set text + if ( nodeName === "script" && dest.text !== src.text ) { + disableScript( dest ).text = src.text; + restoreScript( dest ); + + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + } else if ( nodeName === "object" ) { + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone(true); + jQuery( insert[i] )[ original ]( elems ); + + // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() + core_push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + +function getAll( context, tag ) { + var elems, elem, + i = 0, + found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) : + undefined; + + if ( !found ) { + for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { + if ( !tag || jQuery.nodeName( elem, tag ) ) { + found.push( elem ); + } else { + jQuery.merge( found, getAll( elem, tag ) ); + } + } + } + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], found ) : + found; +} + +// Used in buildFragment, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( manipulation_rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var destElements, node, clone, i, srcElements, + inPage = jQuery.contains( elem.ownerDocument, elem ); + + if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( (!jQuery.support.noCloneEvent || !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 ); + + // Fix all IE cloning issues + for ( i = 0; (node = srcElements[i]) != null; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + fixCloneNodeIssues( node, 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; (node = srcElements[i]) != null; i++ ) { + cloneCopyEvent( node, destElements[i] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var j, elem, contains, + tmp, tag, tbody, wrap, + l = elems.length, + + // Ensure a safe fragment + safe = createSafeFragment( context ), + + nodes = [], + i = 0; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + 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 || safe.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.lastChild; + } + + // Manually add leading whitespace removed by IE + if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); + } + + // Remove IE's autoinserted from table fragments + if ( !jQuery.support.tbody ) { + + // String was a , *may* have spurious + elem = tag === "table" && !rtbody.test( elem ) ? + tmp.firstChild : + + // String was a bare or + wrap[1] === "
" && !rtbody.test( elem ) ? + tmp : + 0; + + j = elem && elem.childNodes.length; + while ( j-- ) { + if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { + elem.removeChild( tbody ); + } + } + } + + jQuery.merge( nodes, tmp.childNodes ); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while ( tmp.firstChild ) { + tmp.removeChild( tmp.firstChild ); + } + + // Remember the top-level container for proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if ( tmp ) { + safe.removeChild( tmp ); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !jQuery.support.appendChecked ) { + jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); + } + + 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( safe.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 ); + } + } + } + } + + tmp = null; + + return safe; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var elem, type, id, data, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = jQuery.support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + 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 ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( typeof elem.removeAttribute !== core_strundefined ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + core_deletedIds.push( id ); + } + } + } + } + }, + + _evalUrl: function( url ) { + return jQuery.ajax({ + url: url, + type: "GET", + dataType: "script", + async: false, + global: false, + "throws": true + }); + } +}); +jQuery.fn.extend({ + wrapAll: function( html ) { + 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 + var 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.firstChild && elem.firstChild.nodeType === 1 ) { + elem = elem.firstChild; + } + + 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 iframe, getStyles, curCSS, + ralpha = /alpha\([^)]*\)/i, + ropacity = /opacity\s*=\s*([^)]*)/, + rposition = /^(top|right|bottom|left)$/, + // 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 ); +} + +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 ] = jQuery._data( 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 ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); + } + } else { + + if ( !values[ index ] ) { + hidden = isHidden( elem ); + + if ( display && display !== "none" || !hidden ) { + jQuery._data( 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 len, styles, + 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 ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each(function() { + if ( 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, + "order": 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": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" + }, + + // 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 specifing 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 ) { + + // Wrapped to prevent IE from throwing errors when 'invalid' values are provided + // Fixes bug #5509 + try { + style[ name ] = value; + } catch(e) {} + } + + } 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 num, val, 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; + } +}); + +// NOTE: we've included the "window" in window.getComputedStyle +// because jsdom on node.js will break without it. +if ( window.getComputedStyle ) { + getStyles = function( elem ) { + return window.getComputedStyle( elem, null ); + }; + + curCSS = function( elem, name, _computed ) { + var width, minWidth, maxWidth, + computed = _computed || getStyles( elem ), + + // 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 ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right + // 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; + }; +} else if ( document.documentElement.currentStyle ) { + getStyles = function( elem ) { + return elem.currentStyle; + }; + + curCSS = function( elem, name, _computed ) { + var left, rs, rsLeft, + computed = _computed || getStyles( elem ), + ret = computed ? computed[ name ] : undefined, + style = elem.style; + + // Avoid setting ret to empty string here + // so we don't default to auto + if ( ret == null && style && style[ name ] ) { + ret = style[ name ]; + } + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + // but not position css attributes, as those are proportional to the parent element instead + // and we can't measure the parent instead because it might trigger a "stacking dolls" problem + if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { + + // Remember the original values + left = style.left; + rs = elem.runtimeStyle; + rsLeft = rs && rs.left; + + // Put in the new values to get a computed value out + if ( rsLeft ) { + rs.left = elem.currentStyle.left; + } + style.left = name === "fontSize" ? "1em" : ret; + ret = style.pixelLeft + "px"; + + // Revert the changed values + style.left = left; + if ( rsLeft ) { + rs.left = rsLeft; + } + } + + return ret === "" ? "auto" : 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("