diff --git a/code/jeeplatform-admin/pom.xml b/code/jeeplatform-admin/pom.xml index dbf353ca0f91347878c161e1e9ecfff80e7bb3eb..ba50c7043694f91291aa4fad96752816e5c82c35 100644 --- a/code/jeeplatform-admin/pom.xml +++ b/code/jeeplatform-admin/pom.xml @@ -14,8 +14,12 @@ 1.2.3 + 1.2.4 + 1.2.4 4.7.2 3.7 + 3.2.0 + 1.2.4 @@ -56,8 +60,18 @@ org.apache.shiro - shiro-all - ${shiro.version} + shiro-spring + ${shiro.spring.version} + + + org.apache.shiro + shiro-ehcache + ${shiro.encache.version} + + + org.apache.shiro + shiro-cas + ${shiro.cas.version} @@ -81,6 +95,13 @@ 2.5 + + + org.jasig.cas.client + cas-client-core + ${cas.version} + + diff --git a/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/core/Constants.java b/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/core/CommonConsts.java similarity index 97% rename from code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/core/Constants.java rename to code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/core/CommonConsts.java index 31127d7c0460d6af5b6149152838dd189e48af83..7c75fe88bcf5037a7c17e4087d9d7ab98256a6cf 100644 --- a/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/core/Constants.java +++ b/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/core/CommonConsts.java @@ -7,7 +7,7 @@ import java.util.Locale; * @author Nicky * @date 2017年3月6日 */ -public class Constants { +public class CommonConsts { //定义统一Locale.CHINA,程序中所有和Locale相关操作均默认使用此Locale public static final Locale LOCALE_CHINA = Locale.CHINA; diff --git a/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/util/DateUtils.java b/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/util/DateUtils.java index d945df3fc7b4884f950005d3bd6cb8890b00debc..fad42c88e89fabb13a836bc61bf14216b2728464 100644 --- a/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/util/DateUtils.java +++ b/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/util/DateUtils.java @@ -2,7 +2,7 @@ package org.muses.jeeplatform.util; -import org.muses.jeeplatform.core.Constants; +import org.muses.jeeplatform.core.CommonConsts; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -40,7 +40,7 @@ public class DateUtils { * @return */ public static Date parse(String pattern, String date){ - return parse(pattern, date, Constants.LOCALE_CHINA); + return parse(pattern, date, CommonConsts.LOCALE_CHINA); } /** diff --git a/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/CodeController.java b/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/CodeController.java index ffbf2bba8141fd061ce46a630b4679ff3ef66f23..71e299fe683c5eb82050576ebbbc461e7c877c75 100644 --- a/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/CodeController.java +++ b/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/CodeController.java @@ -3,7 +3,7 @@ package org.muses.jeeplatform.web.controller; import org.apache.shiro.SecurityUtils; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject; -import org.muses.jeeplatform.core.Constants; +import org.muses.jeeplatform.core.CommonConsts; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @@ -30,7 +30,7 @@ public class CodeController { Subject currentUser = SecurityUtils.getSubject(); Session session = currentUser.getSession(); - session.setAttribute(Constants.SESSION_SECURITY_CODE, code); + session.setAttribute(CommonConsts.SESSION_SECURITY_CODE, code); try { ServletOutputStream out = response.getOutputStream(); diff --git a/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/LoginController.java b/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/LoginController.java index a6022d68e8572aa5b7b3c2a17c5eb0ee37f5c829..1079f37cc11bf79ac9b02c85ee49f6ad0077a483 100644 --- a/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/LoginController.java +++ b/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/LoginController.java @@ -8,7 +8,7 @@ import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.crypto.hash.SimpleHash; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject; -import org.muses.jeeplatform.core.Constants; +import org.muses.jeeplatform.core.CommonConsts; import org.muses.jeeplatform.core.ResultVO; import org.muses.jeeplatform.core.entity.admin.Menu; import org.muses.jeeplatform.core.entity.admin.Permission; @@ -95,7 +95,7 @@ public class LoginController extends BaseController { //获取Shiro管理的Session Subject subject = SecurityUtils.getSubject(); Session session = subject.getSession(); - String codeSession = (String)session.getAttribute(Constants.SESSION_SECURITY_CODE); + String codeSession = (String)session.getAttribute(CommonConsts.SESSION_SECURITY_CODE); String code = logindata[2]; /**检测页面验证码是否为空,调用工具类检测**/ if(Tools.isEmpty(code)){ @@ -116,9 +116,9 @@ public class LoginController extends BaseController { }else{ //Shiro添加会话 session.setAttribute("username", username); - session.setAttribute(Constants.SESSION_USER, user); + session.setAttribute(CommonConsts.SESSION_USER, user); //删除验证码Session - session.removeAttribute(Constants.SESSION_SECURITY_CODE); + session.removeAttribute(CommonConsts.SESSION_SECURITY_CODE); //保存登录IP this.getRemortIP(username); /**Shiro加入身份验证**/ @@ -153,7 +153,7 @@ public class LoginController extends BaseController { /**获取Shiro管理的Session**/ Subject subject = SecurityUtils.getSubject(); Session session = subject.getSession(); - User user = (User)session.getAttribute(Constants.SESSION_USER); + User user = (User)session.getAttribute(CommonConsts.SESSION_USER); if(user != null){ Set roles = user.getRoles(); @@ -218,8 +218,8 @@ public class LoginController extends BaseController { /**Shiro管理Session**/ Subject sub = SecurityUtils.getSubject(); Session session = sub.getSession(); - session.removeAttribute(Constants.SESSION_USER); - session.removeAttribute(Constants.SESSION_SECURITY_CODE); + session.removeAttribute(CommonConsts.SESSION_USER); + session.removeAttribute(CommonConsts.SESSION_SECURITY_CODE); /**Shiro销毁登录**/ Subject subject = SecurityUtils.getSubject(); subject.logout(); @@ -228,5 +228,11 @@ public class LoginController extends BaseController { return mv; } + @RequestMapping("/403") + public ModelAndView to403PAge(){ + ModelAndView mv = this.getModelAndView(); + mv.setViewName("admin/frame/403"); + return mv; + } } diff --git a/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/MenuController.java b/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/MenuController.java index 291c42cbcd2fbed0095fc0086c03bc7d3d2d8b30..cc39189206653446ab50585b2d6bbb47b92ce451 100644 --- a/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/MenuController.java +++ b/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/MenuController.java @@ -2,7 +2,7 @@ package org.muses.jeeplatform.web.controller; import com.alibaba.fastjson.JSON; import org.muses.jeeplatform.annotation.LogController; -import org.muses.jeeplatform.core.Constants; +import org.muses.jeeplatform.core.CommonConsts; import org.muses.jeeplatform.core.entity.admin.Menu; import org.muses.jeeplatform.core.entity.admin.Permission; import org.muses.jeeplatform.service.MenuService; @@ -39,7 +39,7 @@ public class MenuController extends BaseController { public ModelAndView toMenuList(HttpServletRequest request, HttpServletResponse response, Model model) throws IOException { String pageIndexStr = request.getParameter("pageIndex"); - int pageSize = Constants.PAGE_SIZE; + int pageSize = CommonConsts.PAGE_SIZE; ModelAndView mv = this.getModelAndView(); Page menuPage; @@ -72,7 +72,7 @@ public class MenuController extends BaseController { pageIndex = 1; } - int pageSize = Constants.PAGE_SIZE; + int pageSize = CommonConsts.PAGE_SIZE; Page menuPage = menuService.findAll(pageIndex, pageSize, Sort.Direction.ASC,"menuId"); String json = JSON.toJSONString(menuPage.getContent()); return json; diff --git a/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/PermissionController.java b/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/PermissionController.java index 8add10b30cd87e597018ccdc9b681786cb6c1863..2dbb3eb12bfba84baa0fdbd32ec4f09405faf72e 100644 --- a/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/PermissionController.java +++ b/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/PermissionController.java @@ -2,7 +2,7 @@ package org.muses.jeeplatform.web.controller; import com.alibaba.fastjson.JSON; import org.muses.jeeplatform.annotation.LogController; -import org.muses.jeeplatform.core.Constants; +import org.muses.jeeplatform.core.CommonConsts; import org.muses.jeeplatform.core.entity.admin.Permission; import org.muses.jeeplatform.service.PermissionPageService; import org.muses.jeeplatform.service.PermissionService; @@ -43,7 +43,7 @@ public class PermissionController extends BaseController { public ModelAndView queryAll(HttpServletRequest request, HttpServletResponse response, Model model){ String pageIndexStr = request.getParameter("pageIndex"); - int pageSize = Constants.PAGE_SIZE; + int pageSize = CommonConsts.PAGE_SIZE; ModelAndView mv = this.getModelAndView(); Page permissionPage; diff --git a/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/RoleController.java b/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/RoleController.java index 18476d39d16e25a68286cfbdda969ae912364771..72489217cb4c1678b68a7fd503520436a1a939ea 100644 --- a/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/RoleController.java +++ b/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/RoleController.java @@ -2,7 +2,7 @@ package org.muses.jeeplatform.web.controller; import com.alibaba.fastjson.JSON; import org.apache.commons.lang.StringUtils; -import org.muses.jeeplatform.core.Constants; +import org.muses.jeeplatform.core.CommonConsts; import org.muses.jeeplatform.core.entity.admin.Menu; import org.muses.jeeplatform.core.entity.admin.Permission; import org.muses.jeeplatform.core.entity.admin.Role; @@ -51,7 +51,7 @@ public class RoleController extends BaseController { public ModelAndView queryAll(HttpServletRequest request, HttpServletResponse response, Model model){ String pageIndexStr = request.getParameter("pageIndex"); - int pageSize = Constants.PAGE_SIZE; + int pageSize = CommonConsts.PAGE_SIZE; ModelAndView mv = this.getModelAndView(); Page rolePage; diff --git a/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/UserController.java b/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/UserController.java index b9c8c517cd3f5b2733900f6ae108089b12b9f1fa..ba2f59a70549ab37f4e755bb0533052a4eba5a5c 100644 --- a/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/UserController.java +++ b/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/controller/UserController.java @@ -6,7 +6,7 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.shiro.crypto.hash.SimpleHash; -import org.muses.jeeplatform.core.Constants; +import org.muses.jeeplatform.core.CommonConsts; import org.muses.jeeplatform.core.email.JavaEmailSender; import org.muses.jeeplatform.core.entity.admin.Role; import org.muses.jeeplatform.core.entity.admin.User; @@ -58,7 +58,7 @@ public class UserController extends BaseController { public ModelAndView findAll(HttpServletRequest request, HttpServletResponse response, Model model) { String pageIndexStr = request.getParameter("pageIndex"); - int pageSize = Constants.PAGE_SIZE; + int pageSize = CommonConsts.PAGE_SIZE; ModelAndView mv = this.getModelAndView(); Page userPage; @@ -97,7 +97,7 @@ public class UserController extends BaseController { @RequestMapping(value = "/searchU", produces = "application/json;charset=UTf-8") public ModelAndView doSearch(@RequestParam(value = "pageIndex",required = true) String pageIndexStr, @RequestParam(value = "keyword",required = false) String keyword, @RequestParam(value = "startDate",required = false) String startDateStr, @RequestParam(value = "endDate",required = false) String endDateStr) { - int pageSize = Constants.PAGE_SIZE; + int pageSize = CommonConsts.PAGE_SIZE; ModelAndView mv = this.getModelAndView(); Page userPage; diff --git a/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/interceptor/LoginInterceptor.java b/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/interceptor/LoginInterceptor.java index 6b378e867d403dbd30e915d1a942aa20b17902c4..1985374a3b7849315a84e7f2316713d25bc1294c 100644 --- a/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/interceptor/LoginInterceptor.java +++ b/code/jeeplatform-admin/src/main/java/org/muses/jeeplatform/web/interceptor/LoginInterceptor.java @@ -3,7 +3,7 @@ package org.muses.jeeplatform.web.interceptor; import org.apache.shiro.SecurityUtils; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject; -import org.muses.jeeplatform.core.Constants; +import org.muses.jeeplatform.core.CommonConsts; import org.muses.jeeplatform.core.entity.admin.User; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; @@ -22,19 +22,19 @@ public class LoginInterceptor extends HandlerInterceptorAdapter{ HttpServletResponse response, Object handler) throws Exception { String urlpath = request.getServletPath(); /**正则表达式过滤,不匹配该值的就拦截处理**/ - if(urlpath.matches(Constants.REGEXP_PATH)){ + if(urlpath.matches(CommonConsts.REGEXP_PATH)){ return true; }else { //shiro框架的会话管理,获取Session,校验用户是否通过登录验证 Subject subject = SecurityUtils.getSubject(); Session session = subject.getSession(); - User user = (User)session.getAttribute(Constants.SESSION_USER); + User user = (User)session.getAttribute(CommonConsts.SESSION_USER); if(user != null){ /**加入权限校验,待开发...**/ return true; }else{ //重定向到登录页面 - response.sendRedirect(request.getContextPath() + Constants.URL_LOGIN); + response.sendRedirect(request.getContextPath() + CommonConsts.URL_LOGIN); return false; } } diff --git a/code/jeeplatform-admin/src/main/resources/application-dev.yml b/code/jeeplatform-admin/src/main/resources/application-dev.yml index 2223642883e40a7a272cb3aabbeb8b679c5ab9bb..61270f461286e2883062c4313f0aab02ac17cdb1 100644 --- a/code/jeeplatform-admin/src/main/resources/application-dev.yml +++ b/code/jeeplatform-admin/src/main/resources/application-dev.yml @@ -1,5 +1,5 @@ server: - port: 8080 + port: 8081 spring: @@ -72,3 +72,6 @@ spring: + + + diff --git a/code/jeeplatform-admin/src/main/webapp/WEB-INF/jsp/admin/frame/403.jsp b/code/jeeplatform-admin/src/main/webapp/WEB-INF/jsp/admin/frame/403.jsp new file mode 100644 index 0000000000000000000000000000000000000000..5016486863eebeb3ed3f935722b206ca76b2aaad --- /dev/null +++ b/code/jeeplatform-admin/src/main/webapp/WEB-INF/jsp/admin/frame/403.jsp @@ -0,0 +1,36 @@ +<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<% + String path = request.getContextPath(); + String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; +%> + + + + + + + + 403无权访问 + + + + +
+

403 why

+

非常抱歉...

+

您访问的页面无权访问

+

您可以 返回登录页

+
+ + \ No newline at end of file diff --git a/code/jeeplatform-admin/src/main/webapp/WEB-INF/web.xml b/code/jeeplatform-admin/src/main/webapp/WEB-INF/web.xml index a6f9b49b1529e420903f73fd40f433992153d576..4a450b6a0c7e2b7e763238cc1f6d4980a916207b 100644 --- a/code/jeeplatform-admin/src/main/webapp/WEB-INF/web.xml +++ b/code/jeeplatform-admin/src/main/webapp/WEB-INF/web.xml @@ -1,112 +1,173 @@ - - - + + + Archetype Created Web Application - - - + - - - - - - - - + - - - - - - - - - - - - - - - + + encodingFilter + org.springframework.web.filter.CharacterEncodingFilter + + encoding + utf-8 + + + forceEncoding + true <!– 配置forceEncoding为true,请求和响应的数据的字符集均使用当前配置的字符集–> + + + + encodingFilter + /* + - - - - - - - - - - - + <!– 添加SSI(服务端页面包含技术)配置 start –> + + ssi + org.apache.catalina.ssi.SSIServlet + + + ssi + *.shtml + + <!– 添加SSI(服务端页面包含技术)配置 end –> - - - - - - - - - - - - - - - - - - - - - - + <!– 连接池 启用Web监控统计功能 start–> + + DruidWebStatFilter + com.alibaba.druid.support.http.WebStatFilter + + exclusions + *.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/* + + + + DruidWebStatFilter + /* + + + DruidStatView + com.alibaba.druid.support.http.StatViewServlet + + + DruidStatView + /druid/* + + <!– 连接池 启用Web监控统计功能 end–> - - - - - - + + org.springframework.web.util.Log4jConfigListener + + + org.springframework.web.context.ContextLoaderListener + - - - - - - - - - - - - - + + springMvc + org.springframework.web.servlet.DispatcherServlet + + contextConfigLocation + classpath:spring/spring-mvc.xml + + 1 + + + springMvc + / + - - - - - - - - - - - - - - - - + <!– Shiro过滤器配置 start –> + + shiroFilter + + org.springframework.web.filter.DelegatingFilterProxy + + + targetFilterLifecycle + true + + + + shiroFilter + /* + + <!– Shiro过滤器配置 end –> - - - + + 600 + --> - + + + diff --git a/code/jeeplatform-sso/pom.xml b/code/jeeplatform-sso/pom.xml index 233e0883329f321f7a7dda7848fbe542de27af7b..07da4314180b93e86e5d23947b14a33b1ea31df3 100644 --- a/code/jeeplatform-sso/pom.xml +++ b/code/jeeplatform-sso/pom.xml @@ -61,7 +61,7 @@ ${cas.version} - + com.lmax @@ -89,11 +89,12 @@ ${fastjson.version} - + + com.github.izerui cas-server-integration-redis ${cas.integration.redis.version} - --> + com.github.penggle diff --git a/code/jeeplatform-sso/src/main/webapp/WEB-INF/deployerConfigContext.xml b/code/jeeplatform-sso/src/main/webapp/WEB-INF/deployerConfigContext.xml index 07af7e3e77a26a4ea934700d96c3012b8229600b..478c25b0260f80a36fd8ed9c773be4e99bcba139 100644 --- a/code/jeeplatform-sso/src/main/webapp/WEB-INF/deployerConfigContext.xml +++ b/code/jeeplatform-sso/src/main/webapp/WEB-INF/deployerConfigContext.xml @@ -15,6 +15,12 @@ http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> + + + @@ -86,7 +92,25 @@ - + + + + + + + + + diff --git a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casAcceptableUsagePolicyView.jsp b/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casAcceptableUsagePolicyView.jsp deleted file mode 100644 index 4ee34fde1279d13feaa99887a101b18e5ad58c63..0000000000000000000000000000000000000000 --- a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casAcceptableUsagePolicyView.jsp +++ /dev/null @@ -1,26 +0,0 @@ - -
- - -

Acceptable Usage Policy

-
- The purpose of this policy is to establish acceptable and unacceptable use of electronic devices and network resources in conjunction with the established culture of ethical and lawful behavior, openness, trust, and integrity. - -

- By using these resources, you agree to abide by the Acceptable Usage Policy. -

- -

Click '' to continue. Otherwise, click ''.

-
- -
- - - " type="submit" /> - " type="button" - onclick="location.href = location.href;" /> -
-
-
- diff --git a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casAccountDisabledView.jsp b/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casAccountDisabledView.jsp deleted file mode 100644 index 0deddbf5aa212f43ebd0124d72d7489b5e93392d..0000000000000000000000000000000000000000 --- a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casAccountDisabledView.jsp +++ /dev/null @@ -1,6 +0,0 @@ - -
-

-

-
- diff --git a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casAccountLockedView.jsp b/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casAccountLockedView.jsp deleted file mode 100644 index c41bccda922eb1dda76a2065ce4ef17dfa7ffc63..0000000000000000000000000000000000000000 --- a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casAccountLockedView.jsp +++ /dev/null @@ -1,6 +0,0 @@ - -
-

-

-
- diff --git a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casBadHoursView.jsp b/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casBadHoursView.jsp deleted file mode 100644 index ace5f80d402b3debe32f82cc32c40ebc6cd22408..0000000000000000000000000000000000000000 --- a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casBadHoursView.jsp +++ /dev/null @@ -1,6 +0,0 @@ - -
-

-

-
- diff --git a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casBadWorkstationView.jsp b/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casBadWorkstationView.jsp deleted file mode 100644 index 6f5ead2911c2786db0fdde938d9e3592a36c449e..0000000000000000000000000000000000000000 --- a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casBadWorkstationView.jsp +++ /dev/null @@ -1,6 +0,0 @@ - -
-

-

-
- diff --git a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casConfirmView.jsp b/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casConfirmView.jsp deleted file mode 100644 index 5d8cc961c4fb17c0bee60447543109e9dd2b6e37..0000000000000000000000000000000000000000 --- a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casConfirmView.jsp +++ /dev/null @@ -1,5 +0,0 @@ - -
-

-
- \ No newline at end of file diff --git a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casExpiredPassView.jsp b/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casExpiredPassView.jsp deleted file mode 100644 index 8ae8775210eb5e1cec61aeb975931d6809a9de3d..0000000000000000000000000000000000000000 --- a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casExpiredPassView.jsp +++ /dev/null @@ -1,6 +0,0 @@ - -
-

-

-
- diff --git a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casGenericSuccessView.jsp b/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casGenericSuccessView.jsp deleted file mode 100644 index 956ed44fe61b2ba785d0cf0b25a967d9ddbe8962..0000000000000000000000000000000000000000 --- a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casGenericSuccessView.jsp +++ /dev/null @@ -1,8 +0,0 @@ - -
-

-

-

-
- - diff --git a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casLoginView.bat.jsp b/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casLoginView.bat.jsp new file mode 100644 index 0000000000000000000000000000000000000000..441516fef556d3f6780f607f0565ad805d3d5841 --- /dev/null +++ b/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casLoginView.bat.jsp @@ -0,0 +1,36 @@ + + + +<%-- +
+

+

+
+
--%> + + + + + diff --git a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casMustChangePassView.jsp b/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casMustChangePassView.jsp deleted file mode 100644 index 47772dd776111b5419448da47f83c039f0a883af..0000000000000000000000000000000000000000 --- a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/casMustChangePassView.jsp +++ /dev/null @@ -1,6 +0,0 @@ - -
-

-

-
- diff --git a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/serviceErrorSsoView.jsp b/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/serviceErrorSsoView.jsp deleted file mode 100644 index a9fcb96342b1781d7a41ea57f9b98552d3ccd597..0000000000000000000000000000000000000000 --- a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/serviceErrorSsoView.jsp +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - -
-

-

-
- diff --git a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/serviceErrorView.jsp b/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/serviceErrorView.jsp deleted file mode 100644 index 2624d1db2b58f6c6e81f00bd510ab8f2ee19ec94..0000000000000000000000000000000000000000 --- a/code/jeeplatform-sso/src/main/webapp/WEB-INF/view/jsp/default/ui/serviceErrorView.jsp +++ /dev/null @@ -1,6 +0,0 @@ - -
-

-

-
- diff --git a/code/jeeplatform-sso/src/main/webapp/cas.properties b/code/jeeplatform-sso/src/main/webapp/cas.properties index 515c34236a72adda6e547e74e9309c685e791fdd..b4405a2e6de98fb319778866d3fc83f92c815256 100644 --- a/code/jeeplatform-sso/src/main/webapp/cas.properties +++ b/code/jeeplatform-sso/src/main/webapp/cas.properties @@ -1,18 +1,18 @@ -server.name=http://localhost:8080 -server.prefix=${server.name}/cas + server.name=http://localhost:8080 + server.prefix=${server.name}/cas ## # Datasource config -platform.jdbc.jdbcUrl=jdbc:mysql://127.0.0.1:3306/jeeplatform?autoReconnect=true&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false -platform.jdbc.username=root -platform.jdbc.password=root + platform.jdbc.jdbcUrl=jdbc:mysql://127.0.0.1:3306/jeeplatform?autoReconnect=true&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false + platform.jdbc.username=root + platform.jdbc.password=root #platform.jdbc.publickey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKZijIzzXp1dyksL1ZSejBmuVz1Y0vgiQVbcQ/13p4pwHRo8gU3pd6YaWutOlBTEWvHBbnGxIdnrhxnQZGwU1O0CAwEAAQ== -platform.jdbc.initialSize=10 -platform.jdbc.minIdle=10 -platform.jdbc.maxActive=50 + platform.jdbc.initialSize=10 + platform.jdbc.minIdle=10 + platform.jdbc.maxActive=50 # security configuration based on IP address to access the /status and /statistics pages -# cas.securityContext.adminpages.ip=127\.0\.0\.1 + cas.securityContext.adminpages.ip=127\.0\.0\.1 ## # Unique CAS node name @@ -20,6 +20,13 @@ platform.jdbc.maxActive=50 # hostname of the machine running the CAS node, but it could be any label so long as it is unique in the cluster. # host.name= +## +# Redis registry config + redis.hostName=127.0.0.1 + redis.database=0 + redis.password= + redis.port=6379 + ## # JPA Ticket Registry Database Configuration # @@ -69,22 +76,22 @@ platform.jdbc.maxActive=50 # Do note that the following settings MUST be generated per deployment. # # The encryption secret key. By default, must be a octet string of size 256. -# tgc.encryption.key= +#tgc.encryption.key=DSi19FXiMznOlZvZRHsThtl-3FZzNKjQzbHt8QASI7Q # The signing secret key. By default, must be a octet string of size 512. -# tgc.signing.key= +#tgc.signing.key=fOs-_ZjGNfcLsg8LWqkuHM6KccWlTsozxZZrwptqFMQAIvzqCD5lL9s4hvqDp5f-w1bpQM8IUAKEotw7jzhlvw # Decides whether SSO cookie should be created only under secure connections. tgc.secure=false # The expiration value of the SSO cookie -# tgc.maxAge=-1 + tgc.maxAge=-1 # The name of the SSO cookie -# tgc.name=TGC + tgc.name=TGC # The path to which the SSO cookie will be scoped -# tgc.path=/cas + tgc.path=/cas # The expiration value of the SSO cookie for long-term authentications # tgc.remember.me.maxAge=1209600 @@ -93,16 +100,16 @@ platform.jdbc.maxActive=50 warn.cookie.secure=false # The expiration value of the SSO Warning cookie -# warn.cookie.maxAge=-1 + warn.cookie.maxAge=-1 # The name of the SSO Warning cookie -# warn.cookie.name=CASPRIVACY + warn.cookie.name=CASPRIVACY # The path to which the SSO Warning cookie will be scoped -# warn.cookie.path=/cas + warn.cookie.path=/cas # Whether we should track the most recent session by keeping the latest service ticket -# tgt.onlyTrackMostRecentSession = true + tgt.onlyTrackMostRecentSession = true ## # CAS UI Theme Resolution @@ -131,7 +138,7 @@ platform.jdbc.maxActive=50 # Single Sign-On Session # # Indicates whether an SSO session should be created for renewed authentication requests. -# create.sso.renewed.authn=true + create.sso.renewed.authn=true # # Indicates whether an SSO session can be created if no service is present. # create.sso.missing.service=true @@ -194,10 +201,11 @@ message.bundle.basenames=WEB-INF/locale/messages # See the cas-servlet.xml file to understand how these properties are used. # # The encryption secret key. By default, must be a octet string of size 256. -# webflow.encryption.key= +# webflow.encryption.key=DsCqdpcudQPzsdHz # The signing secret key. By default, must be a octet string of size 512. -# webflow.signing.key= +# webflow.signing.key=U2ImXkZHYsZkORpSbjAqcvW3_gzz9oOUg6q2SWMz3Sr4Sf6NIVoNfQ97rqdhmtSZH6elMl8YgaoZrdiRWiybGw + ## # Remote User Authentication @@ -296,7 +304,7 @@ accept.authn.users=casuser::Mellon # Single Sign-On Session TGT Timeouts # # Inactivity Timeout Policy -# tgt.timeout.maxTimeToLiveInSeconds=28800 + tgt.timeout.maxTimeToLiveInSeconds=28800 # Hard Timeout Policy # tgt.timeout.hard.maxTimeToLiveInSeconds @@ -306,13 +314,14 @@ accept.authn.users=casuser::Mellon # tgt.throttled.timeInBetweenUsesInSeconds=5 # Default Expiration Policy -# tgt.maxTimeToLiveInSeconds=28800 -# tgt.timeToKillInSeconds=7200 + tgt.maxTimeToLiveInSeconds=28800 + tgt.timeToKillInSeconds=7200 ## # Service Ticket Timeout # -# st.timeToKillInSeconds=10 +#Ĭ10룬ij1800s + st.timeToKillInSeconds=1800 # st.numberOfUses=1 ## @@ -355,7 +364,7 @@ accept.authn.users=casuser::Mellon # JSON Service Registry # # Directory location where JSON service files may be found. -# service.registry.config.location=classpath:services + service.registry.config.location=WEB-INF/services ## # Service Registry Periodic Reloading Scheduler @@ -458,8 +467,11 @@ accept.authn.users=casuser::Mellon # Ticket Registry Cleaner # # Indicates how frequently the Ticket Registry cleaner should run. Configured in seconds. -# ticket.registry.cleaner.startdelay=20 -# ticket.registry.cleaner.repeatinterval=5000 +#ticket.registry.cleaner.startdelay=20 +#ticket.registry.cleaner.repeatinterval=5000 +# startdelayΪ0ͲcleanerΪҪʹredisĬϵijʱҪcascalendar + ticket.registry.cleaner.startdelay=0 + ticket.registry.cleaner.repeatinterval=0 ## # Ticket ID Generation @@ -718,3 +730,4 @@ accept.authn.users=casuser::Mellon # cas.aup.ldap.startTLS=false # cas.aup.ldap.basedn=dc=example,dc=org # cas.aup.attribute= + diff --git a/code/jeeplatform-sso/src/main/webapp/images/favicon.ico b/code/jeeplatform-sso/src/main/webapp/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..064a144383e0d49a9bf989c8bfc1ea17e7c7ae49 Binary files /dev/null and b/code/jeeplatform-sso/src/main/webapp/images/favicon.ico differ diff --git a/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/css/login.css b/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/css/login.css new file mode 100644 index 0000000000000000000000000000000000000000..fa02af80bc984641ef3a7da61f340f7d8f2d782d --- /dev/null +++ b/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/css/login.css @@ -0,0 +1,31 @@ +@charset "utf-8"; +html,body{margin:0;padding:0;width:100%;} +body{font-size:12px;font-family: "微软雅黑";color:#333;line-height:160%;background: url(../images/login-bg.jpg) center top repeat-x #FFF;height:100%;} +p,ul,.name,.pwd,dd,h1,h2,h3,form,input,select,textarea{margin:0;padding:0;border:0;font-family:"微软雅黑";line-height:150%;} +ul,li{list-style:none;} +div,p{word-wrap: break-word;} +img{border: none;} +input,button,select,textarea{outline:none} + +/*login*/ +.login{padding:1px 0 0 0;background:url(../images/login-bg.jpg) center top no-repeat #FFF;padding:150px 0 0 0;} +.login input.submit{border:none;font-weight:bold;color:#FFF;margin:25px 0 0 150px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow: #CCC 0px 0px 5px;-moz-box-shadow: #CCC 0px 0px 5px;box-shadow: #CCC 0px 0px 5px;background: #31b6e7;cursor: pointer;} +.login input.submit:hover{background:#ff9229;} +.login input.submit{padding:6px 20px;} +.login .box{position:relative;z-index:100;margin:0 auto;width:700px;height:320px;background:url(../images/login.png) center top no-repeat;} +.login .log{position:relative;width:370px;height:260px;margin:0 auto;padding:60px 0 0 20px;} +.login label{display:inline-block;width:70px;text-align:right;padding-right:20px;vertical-align:middle;} +.login .name{padding:10px 5px;font-size:14px;} +.login .pwd{padding:10px 5px;font-size:14px;} +.login .rcode{padding:10px;font-size:14px;} + +.login .alt{position:absolute;top:43px;left:260px;font-size:20px;} +.login .text{filter:alpha(opacity=80);-moz-opacity:0.8;opacity:0.8;} +.login .copyright{position:absolute;left:0;width:100%;bottom:-40px;text-align:center;color:#AAA;} +.login .air-balloon{position:absolute;top:-100px;left:-100px;z-index:50;} +.login .air-balloon.ab-1{width:43px;height:78px;background:url(../images/air-balloon-1.png) no-repeat;} +.login .air-balloon.ab-2{width:24px;height:31px;background:url(../images/air-balloon-2.png) no-repeat;} +.login .footer{position: fixed;left:0;bottom:0;z-index:-1;width:100%;height:198px;background:url(../images/login-foot.jpg) center bottom repeat-x;} +.text{border:1px solid #CCC;padding:5px;background-color:#FCFCFC;line-height:14px;width:220px;font-size:12px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow: #CCC 0px 0px 5px;-moz-box-shadow: #CCC 0px 0px 5px;box-shadow: #CCC 0px 0px 5px;border:1px solid #CCC;font-size:12px;} +.text:focus{border:1px solid #31b6e7;background-color:#FFF;-webkit-box-shadow: #CCC 0px 0px 5px;-moz-box-shadow: #CCC 0px 0px 5px;box-shadow: #0178a4 0px 0px 5px;} +.text:hover{background-color:#FFF;} \ No newline at end of file diff --git a/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/images/air-balloon-1.png b/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/images/air-balloon-1.png new file mode 100644 index 0000000000000000000000000000000000000000..7a44159a7c157617bc70ca146b745ab881b2d572 Binary files /dev/null and b/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/images/air-balloon-1.png differ diff --git a/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/images/air-balloon-2.png b/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/images/air-balloon-2.png new file mode 100644 index 0000000000000000000000000000000000000000..ac7b7e8b782f6df9bcde36384461271679664f82 Binary files /dev/null and b/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/images/air-balloon-2.png differ diff --git a/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/images/login-bg.jpg b/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/images/login-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f72fd1f4c086fcf09efa0ac8a7d313dcc089bd4d Binary files /dev/null and b/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/images/login-bg.jpg differ diff --git a/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/images/login-foot.jpg b/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/images/login-foot.jpg new file mode 100644 index 0000000000000000000000000000000000000000..390ce34cf03d8f001a875aa25810878ac09880df Binary files /dev/null and b/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/images/login-foot.jpg differ diff --git a/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/images/login.png b/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/images/login.png new file mode 100644 index 0000000000000000000000000000000000000000..a1c82fd7d987d14ca8033027caf5a2bce45dada5 Binary files /dev/null and b/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/images/login.png differ diff --git a/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/js/fun.base.js b/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/js/fun.base.js new file mode 100644 index 0000000000000000000000000000000000000000..36e7f60506615ad395343f652db1f8ea28972011 --- /dev/null +++ b/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/js/fun.base.js @@ -0,0 +1,13 @@ +;function rand(mi,ma){ + var range = ma - mi; + var out = mi + Math.round( Math.random() * range) ; + return parseInt(out); +}; + +function getViewSize(){ + var de=document.documentElement; + var db=document.body; + var viewW=de.clientWidth==0 ? db.clientWidth : de.clientWidth; + var viewH=de.clientHeight==0 ? db.clientHeight : de.clientHeight; + return Array(viewW,viewH); +} \ No newline at end of file diff --git a/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/js/jquery-1.8.3.js b/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/js/jquery-1.8.3.js new file mode 100644 index 0000000000000000000000000000000000000000..c3b7a153018763adf686447135b26031f8d81668 --- /dev/null +++ b/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/js/jquery-1.8.3.js @@ -0,0 +1 @@ +(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write(""),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t
a",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="
t
",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="
",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;ti.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="
",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="

",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t0)for(i=r;i=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*\s*$/g,Nt={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X
","
"]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1>");try{for(;r1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]===""&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("
").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window); \ No newline at end of file diff --git a/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/js/jquery.cookie.js b/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/js/jquery.cookie.js new file mode 100644 index 0000000000000000000000000000000000000000..feb62e92561a63eae96ff42e50ed873944382a5d --- /dev/null +++ b/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/js/jquery.cookie.js @@ -0,0 +1,117 @@ +/*! + * jQuery Cookie Plugin v1.4.1 + * https://github.com/carhartl/jquery-cookie + * + * Copyright 2006, 2014 Klaus Hartl + * Released under the MIT license + */ +(function (factory) { + if (typeof define === 'function' && define.amd) { + // AMD + define(['jquery'], factory); + } else if (typeof exports === 'object') { + // CommonJS + factory(require('jquery')); + } else { + // Browser globals + factory(jQuery); + } +}(function ($) { + + var pluses = /\+/g; + + function encode(s) { + return config.raw ? s : encodeURIComponent(s); + } + + function decode(s) { + return config.raw ? s : decodeURIComponent(s); + } + + function stringifyCookieValue(value) { + return encode(config.json ? JSON.stringify(value) : String(value)); + } + + function parseCookieValue(s) { + if (s.indexOf('"') === 0) { + // This is a quoted cookie as according to RFC2068, unescape... + s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); + } + + try { + // Replace server-side written pluses with spaces. + // If we can't decode the cookie, ignore it, it's unusable. + // If we can't parse the cookie, ignore it, it's unusable. + s = decodeURIComponent(s.replace(pluses, ' ')); + return config.json ? JSON.parse(s) : s; + } catch(e) {} + } + + function read(s, converter) { + var value = config.raw ? s : parseCookieValue(s); + return $.isFunction(converter) ? converter(value) : value; + } + + var config = $.cookie = function (key, value, options) { + + // Write + + if (arguments.length > 1 && !$.isFunction(value)) { + options = $.extend({}, config.defaults, options); + + if (typeof options.expires === 'number') { + var days = options.expires, t = options.expires = new Date(); + t.setTime(+t + days * 864e+5); + } + + return (document.cookie = [ + encode(key), '=', stringifyCookieValue(value), + options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE + options.path ? '; path=' + options.path : '', + options.domain ? '; domain=' + options.domain : '', + options.secure ? '; secure' : '' + ].join('')); + } + + // Read + + var result = key ? undefined : {}; + + // To prevent the for loop in the first place assign an empty array + // in case there are no cookies at all. Also prevents odd result when + // calling $.cookie(). + var cookies = document.cookie ? document.cookie.split('; ') : []; + + for (var i = 0, l = cookies.length; i < l; i++) { + var parts = cookies[i].split('='); + var name = decode(parts.shift()); + var cookie = parts.join('='); + + if (key && key === name) { + // If second argument (value) is a function it's a converter... + result = read(cookie, value); + break; + } + + // Prevent storing a cookie that we couldn't decode. + if (!key && (cookie = read(cookie)) !== undefined) { + result[name] = cookie; + } + } + + return result; + }; + + config.defaults = {}; + + $.removeCookie = function (key, options) { + if ($.cookie(key) === undefined) { + return false; + } + + // Must not alter options, thus extending a fresh object... + $.cookie(key, '', $.extend({}, options, { expires: -1 })); + return !$.cookie(key); + }; + +})); diff --git a/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/js/jquery.tips.js b/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/js/jquery.tips.js new file mode 100644 index 0000000000000000000000000000000000000000..a4d7983dc6a10405f8ea7e2ba0d076db3a469df6 --- /dev/null +++ b/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/js/jquery.tips.js @@ -0,0 +1,104 @@ +/** +* jquery tips 提示插件 jquery.tips.js v0.1beta +* +* 使用方法 +* $(selector).tips({ //selector 为jquery选择器 +* msg:'your messages!', //你的提示消息 必填 +* side:1, //提示窗显示位置 1,2,3,4 分别代表 上右下左 默认为1(上) 可选 +* color:'#FFF', //提示文字色 默认为白色 可选 +* bg:'#F00',//提示窗背景色 默认为红色 可选 +* time:2,//自动关闭时间 默认2秒 设置0则不自动关闭 可选 +* x:0,//横向偏移 正数向右偏移 负数向左偏移 默认为0 可选 +* y:0,//纵向偏移 正数向下偏移 负数向上偏移 默认为0 可选 +* }) +* +* +*/ +(function ($) { + $.fn.tips = function(options){ + var defaults = { + side:1, + msg:'', + color:'#FFF', + bg:'#F00', + time:2, + x:0, + y:0 + } + var options = $.extend(defaults, options); + if (!options.msg||isNaN(options.side)) { + throw new Error('params error'); + } + if(!$('#jquery_tips_style').length){ + var style=''; + $(document.body).append(style); + } + this.each(function(){ + var element=$(this); + var element_top=element.offset().top,element_left=element.offset().left,element_height=element.outerHeight(),element_width=element.outerWidth(); + options.side=options.side<1?1:options.side>4?4:Math.round(options.side); + var sideName=options.side==1?'top':options.side==2?'right':options.side==3?'bottom':options.side==4?'left':'top'; + var tips=$('
'+options.msg+'
').appendTo(document.body); + tips.find('.jq_tips_arrow').css('border-'+sideName,'10px solid '+options.bg); + tips.find('.jq_tips_info').css({ + color:options.color, + backgroundColor:options.bg + }); + switch(options.side){ + case 1: + tips.css({ + top:element_top-tips.outerHeight()+options.x, + left:element_left-10+options.y + }); + break; + case 2: + tips.css({ + top:element_top-20+options.x, + left:element_left+element_width+options.y + }); + break; + case 3: + tips.css({ + top:element_top+element_height+options.x, + left:element_left-10+options.y + }); + break; + case 4: + tips.css({ + top:element_top-20+options.x, + left:element_left-tips.outerWidth()+options.y + }); + break; + default: + } + var closeTime; + tips.fadeIn('fast').click(function(){ + clearTimeout(closeTime); + tips.fadeOut('fast',function(){ + tips.remove(); + }) + }) + if(options.time){ + closeTime=setTimeout(function(){ + tips.click(); + },options.time*1000); + tips.hover(function(){ + clearTimeout(closeTime); + },function(){ + closeTime=setTimeout(function(){ + tips.click(); + },options.time*1000); + }) + } + }); + return this; + }; +})(jQuery); \ No newline at end of file diff --git a/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/js/login.js b/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/js/login.js new file mode 100644 index 0000000000000000000000000000000000000000..e1482ff4a9ca1e5221cf87f5b79574c483572209 --- /dev/null +++ b/code/jeeplatform-sso/src/main/webapp/themes/jeeplatform/js/login.js @@ -0,0 +1,45 @@ +$(function(){ + airBalloon('div.air-balloon'); +}); + +/* +@function 热气球移动 +@update by julying , 2012/7/25 +*/ +function airBalloon(balloon){ + var viewSize = [] , viewWidth = 0 , viewHeight = 0 ; + resize(); + $(balloon).each(function(){ + $(this).css({top: rand(40, viewHeight * 0.5 ) , left : rand( 10 , viewWidth - $(this).width() ) }); + fly(this); + }); + $(window).resize(function(){ + resize() + $(balloon).each(function(){ + $(this).stop().animate({top: rand(40, viewHeight * 0.5 ) , left : rand( 10 , viewWidth - $(this).width() ) } ,1000 , function(){ + fly(this); + }); + }); + }); + function resize(){ + viewSize = getViewSize(); + viewWidth = $(document).width() ; + viewHeight = viewSize[1] ; + } + function fly(obj){ + var $obj = $(obj); + var currentTop = parseInt($obj.css('top')); + var currentLeft = parseInt($obj.css('left') ); + var targetLeft = rand( 10 , viewWidth - $obj.width() ); + var targetTop = rand(40, viewHeight /2 ); + /*求两点之间的距离*/ + var removing = Math.sqrt( Math.pow( targetLeft - currentLeft , 2 ) + Math.pow( targetTop - currentTop , 2 ) ); + /*每秒移动24px ,计算所需要的时间,从而保持 气球的速度恒定*/ + var moveTime = removing / 24; + $obj.animate({ top : targetTop , left : targetLeft} , moveTime * 1000 , function(){ + setTimeout(function(){ + fly(obj); + }, rand(1000, 3000) ); + }); + } +}; \ No newline at end of file diff --git a/code/pom.xml b/code/pom.xml index 6ebc99220f2f558935aac473899558bbcc63e9ea..7ab0389308dad6b533edee754a1760e9f2d1102e 100755 --- a/code/pom.xml +++ b/code/pom.xml @@ -226,13 +226,19 @@ - + + repos Repository http://maven.aliyun.com/nexus/content/groups/public + + + jitpack.io + https://jitpack.io +